问两个SQL语句问题(MYSQL)
SQL code
1、上面的 SELECT .... WHERE ... 语句为什么错呢? 即使把 FROM 后面在加一个 FROM “入库单表, LSB” 也是错的。
2、上面的 SELECT .... INNER JOIN .... 语句为什么对呢?
===============================================================================================
===============================================================================================
帮修改下面的 DELETE 语句。 DELETE 语句中的 “\” 的作用是连接字符串的,这个符号是C/C++中表示:下面的字符串和上面的字符串是同一个。所以“\” 是没错的
SQL code
C/C++ code
mysql> DESCRIBE 入库单表; +------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+----------+------+-----+---------+-------+ | 单号 | text | YES | | NULL | | | 入库日期 | datetime | YES | | NULL | | | 品名 | text | YES | | NULL | | | 供货商编号 | text | YES | | NULL | | | 颜色 | text | YES | | NULL | | | 规格 | text | YES | | NULL | | | 数量 | int(11) | YES | | NULL | | | 单位 | text | YES | | NULL | | | 单价 | double | YES | | NULL | | | 金额 | double | YES | | NULL | | +------------+----------+------+-----+---------+-------+ 10 rows in set (0.19 sec) mysql> DESCRIBE LSB; +------------+------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+------+------+-----+---------+-------+ | 单号 | text | YES | | NULL | | | 品名 | text | YES | | NULL | | | 供货商编号 | text | YES | | NULL | | | 颜色 | text | YES | | NULL | | | 规格 | text | YES | | NULL | | | 单位 | text | YES | | NULL | | +------------+------+------+-----+---------+-------+ 6 rows in set (0.05 sec) mysql> SELECT * FROM 入库单表; +------+---------------------+------+------------+------+------+------+------+-- ----+------+ | 单号 | 入库日期 | 品名 | 供货商编号 | 颜色 | 规格 | 数量 | 单位 | 单价 | 金额 | +------+---------------------+------+------------+------+------+------+------+-- ----+------+ | 001 | 2011-05-16 16:03:02 | CP | | | | 12 | | 5 | 60 | +------+---------------------+------+------------+------+------+------+------+-- ----+------+ 1 row in set (0.00 sec) mysql> SELECT * FROM LSB; +------+------+------------+------+------+------+ | 单号 | 品名 | 供货商编号 | 颜色 | 规格 | 单位 | +------+------+------------+------+------+------+ | 001 | CP | | | | | +------+------+------------+------+------+------+ 1 row in set (0.00 sec) mysql> SELECT 入库单表.单号 FROM 入库单表 WHERE 入库单表.单号 = LSB.单号; ERROR 1054 (42S22): Unknown column 'LSB.鍗曞彿' in 'where clause' mysql> SELECT 入库单表.单号 FROM 入库单表 inner join LSB on 入库单表.单号 = LSB. 单号; +------+ | 单号 | +------+ | 001 | +------+ 1 row in set (0.00 sec)
1、上面的 SELECT .... WHERE ... 语句为什么错呢? 即使把 FROM 后面在加一个 FROM “入库单表, LSB” 也是错的。
2、上面的 SELECT .... INNER JOIN .... 语句为什么对呢?
===============================================================================================
===============================================================================================
帮修改下面的 DELETE 语句。 DELETE 语句中的 “\” 的作用是连接字符串的,这个符号是C/C++中表示:下面的字符串和上面的字符串是同一个。所以“\” 是没错的
SQL code
mysql> DESCRIBE LSB_RKZL; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | 单号 | text | YES | | NULL | | | 品名 | text | YES | | NULL | | | 供货商编号 | text | YES | | NULL | | | 颜色 | text | YES | | NULL | | | 规格 | text | YES | | NULL | | | 单位 | text | YES | | NULL | | | 总量 | int(11) | YES | | NULL | | +------------+---------+------+-----+---------+-------+ 7 rows in set (0.09 sec) mysql> DESCRIBE LSB_KCZL; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | 单号 | text | YES | | NULL | | | 品名 | text | YES | | NULL | | | 供货商编号 | text | YES | | NULL | | | 颜色 | text | YES | | NULL | | | 规格 | text | YES | | NULL | | | 单位 | text | YES | | NULL | | | 库存 | int(11) | YES | | NULL | | +------------+---------+------+-----+---------+-------+ 7 rows in set (0.02 sec) mysql> SELECT * FROM LSB_RKZL; +------+------+------------+------+------+------+------+ | 单号 | 品名 | 供货商编号 | 颜色 | 规格 | 单位 | 总量 | +------+------+------------+------+------+------+------+ | 001 | CP | | | | | 12 | +------+------+------------+------+------+------+------+ 1 row in set (0.00 sec) mysql> SELECT * FROM LSB_KCZL; +------+------+------------+------+------+------+------+ | 单号 | 品名 | 供货商编号 | 颜色 | 规格 | 单位 | 库存 | +------+------+------------+------+------+------+------+ | 001 | CP | | | | | 2 | +------+------+------------+------+------+------+------+ 1 row in set (0.00 sec)
C/C++ code
mysql_query(conn,"delete from lsb_rkzl where \ lsb_rkzl.单号 = lsb_kczl.单号 \ lsb_rkzl.品名 = lsb_kczl.品名 \ lsb_rkzl.供货商编号 = lsb_kczl.供货商编号 \ lsb_rkzl.颜色 = lsb_kczl.颜色 \ lsb_rkzl.规格 = lsb_kczl.规格 \ lsb_rkzl.单位 = lsb_kczl.单位");
作者: xiaoyuanyuan2009 发布时间: 2011-05-17
第一个,你没有关联LSB,就直接读这个表里的字段,当然是错的了。
第二个,你的表里不设置主键吗?
delete from lsb_rkzl where (lsb_rkzl.单号, lsb_rkzl.品名 , lsb_rkzl.供货商编号 , lsb_rkzl.颜色 , lsb_rkzl.规格 , lsb_rkzl.单位 ) in select (
lsb_rkzl.单号, lsb_rkzl.品名 , lsb_rkzl.供货商编号 , lsb_rkzl.颜色 , lsb_rkzl.规格 , lsb_rkzl.单位 from lsb_rkzl left join lsb_kczl where lsb_rkzl.单号 = lsb_kczl.单号 \
lsb_rkzl.品名 = lsb_kczl.品名 \
lsb_rkzl.供货商编号 = lsb_kczl.供货商编号 \
lsb_rkzl.颜色 = lsb_kczl.颜色 \
lsb_rkzl.规格 = lsb_kczl.规格 \
lsb_rkzl.单位 = lsb_kczl.单位");
第二个,你的表里不设置主键吗?
delete from lsb_rkzl where (lsb_rkzl.单号, lsb_rkzl.品名 , lsb_rkzl.供货商编号 , lsb_rkzl.颜色 , lsb_rkzl.规格 , lsb_rkzl.单位 ) in select (
lsb_rkzl.单号, lsb_rkzl.品名 , lsb_rkzl.供货商编号 , lsb_rkzl.颜色 , lsb_rkzl.规格 , lsb_rkzl.单位 from lsb_rkzl left join lsb_kczl where lsb_rkzl.单号 = lsb_kczl.单号 \
lsb_rkzl.品名 = lsb_kczl.品名 \
lsb_rkzl.供货商编号 = lsb_kczl.供货商编号 \
lsb_rkzl.颜色 = lsb_kczl.颜色 \
lsb_rkzl.规格 = lsb_kczl.规格 \
lsb_rkzl.单位 = lsb_kczl.单位");
作者: yangxiao_jiang 发布时间: 2011-05-17
1、上面的 SELECT .... WHERE ... 语句为什么错呢?
LSB没有出现在FROM后面
即使把 FROM 后面在加一个 FROM “入库单表, LSB” 也是错的。
语法错误
2、上面的 SELECT .... INNER JOIN .... 语句为什么对呢?
语法正确
delete a from lsb_rkzl a inner join lsb_kczl b
on a.单号 = b.单号 and ...
LSB没有出现在FROM后面
即使把 FROM 后面在加一个 FROM “入库单表, LSB” 也是错的。
语法错误
2、上面的 SELECT .... INNER JOIN .... 语句为什么对呢?
语法正确
delete a from lsb_rkzl a inner join lsb_kczl b
on a.单号 = b.单号 and ...
作者: wwwwb 发布时间: 2011-05-17
貌似已经有人回答你没有关联了
作者: yeluolengfen 发布时间: 2011-05-17
1楼的 DELETE 语句用了 IN,IN 相当于 OR,咱要用 AND 才行啊
作者: xiaoyuanyuan2009 发布时间: 2011-05-17
or和and明显两个不同的逻辑
作者: rucypli 发布时间: 2011-05-17