我有一个表可能缺少ID,因此我需要查看另一张表。在缺少ID的地方,我需要根据当前表插入一行,但将qty字段设置为0。不确定是否可以...
表A:
ID--F1--QTY
1 --xx--5
2 --xx--6
3 --xx--7
表B:
ID
4
新表格:
ID--F1--QTY
1 --xx--5
2 --xx--6
3 --xx--7
4 --xx--0
答案 0 :(得分:2)
您可以使用联接或NOT IN来做到这一点,
使用加入
将tableB加入tableA并选择所有不存在的ID,然后将其插入tableA
INSERT INTO TableA(ID, QTY)
SELECT X.ID, 0 QTY FROM TableB X
LEFT OUTER JOIN TableA Y ON X.ID = Y.ID
WHERE Y.ID IS NULL
OR
如果要使用两个表中的数据创建新表,请使用以下SQL
INSERT INTO NewTable(ID, QTY)
SELECT X.ID, 0 QTY FROM TableB X
LEFT OUTER JOIN TableA Y ON X.ID = Y.ID
WHERE Y.ID IS NULL
UNION ALL
SELECT ID, QTY FROM TableA
使用禁止进入
INSERT INTO TableA(ID, QTY)
SELECT X.ID, 0 QTY FROM TableB X
WHERE X.ID NOT IN (SELECT ID FROM TableA WHERE ID IS NOT NULL)
答案 1 :(得分:1)
另一个选项是相关子查询和NOT EXITS
。
INSERT INTO `Table A`
(`ID`,
`QTY`)
SELECT `ID`,
0
FROM `Table B`
WHERE NOT EXISTS (SELECT *
FROM `Table A`
WHERE `Table A`.`ID` = `Table B`.`ID`);