SQL Select/insert 另一行 table 如果它不存在于一个 table
SQL Select/insert a row from another table if it doesn't exist in one table
我有一个 table 可能缺少 ID,因此我需要查看另一个 table。在缺少 ID 的地方,我需要根据当前 table 插入一行,但将 qty 字段设为 0。不确定这是否可能...
Table答:
ID--F1--QTY
1 --xx--5
2 --xx--6
3 --xx--7
Table乙:
ID
4
新 Table:
ID--F1--QTY
1 --xx--5
2 --xx--6
3 --xx--7
4 --xx--0
您可以使用联接或 NOT IN 来执行此操作,
使用联接
Join 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
或
如果您想使用来自两个 table 的数据创建一个新的 table,请使用以下 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)
另一种选择是相关子查询和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`);
我有一个 table 可能缺少 ID,因此我需要查看另一个 table。在缺少 ID 的地方,我需要根据当前 table 插入一行,但将 qty 字段设为 0。不确定这是否可能...
Table答:
ID--F1--QTY
1 --xx--5
2 --xx--6
3 --xx--7
Table乙:
ID
4
新 Table:
ID--F1--QTY
1 --xx--5
2 --xx--6
3 --xx--7
4 --xx--0
您可以使用联接或 NOT IN 来执行此操作,
使用联接
Join 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
或
如果您想使用来自两个 table 的数据创建一个新的 table,请使用以下 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)
另一种选择是相关子查询和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`);