簡體   English   中英

SQL如果在一個表中不存在,則從另一表中選擇/插入行

[英]SQL Select/insert a row from another table if it doesn't exist in one table

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

您可以使用聯接或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

要么

如果要使用兩個表中的數據創建新表,請使用以下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)

另一個選項是相關子查詢和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`);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM