如果一个表中不存在行,则从另一个表中选择/插入行

oxcyiej7  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(350)

我有一个表可能缺少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
fumotvh3

fumotvh31#

你可以使用连接或者不使用连接,
使用联接
将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


如果您想用两个表中的数据创建一个新表,那么使用下面的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

使用not in

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)
ltqd579y

ltqd579y2#

另一个选项是相关子查询和 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`);

相关问题