如果另一个表中存在ID,请插入行

时间:2019-01-20 16:26:11

标签: sql

我想检查是否有插入行的方法,但前提是另一个表中已经存在ID。例如:

INSERT INTO table1 (carID) 
SELECT carID FROM table2 WHERE table1.carID IN table2.carID

基本上,我只想在表1中找到carID即可。

4 个答案:

答案 0 :(得分:2)

尝试使用EXISTS

INSERT INTO table1 (carID)
SELECT t2.carID
FROM table2 t2
WHERE EXISTS (SELECT 1 FROM table1 t1 WHERE t1.carID = t2.carID);

答案 1 :(得分:1)

您可以将table1中存在的所有carID添加到table2

INSERT INTO table1 (carID) 
SELECT carID FROM table2

如果要应用条件,可以添加WHERE部分。

答案 2 :(得分:1)

您可以使用in

    INSERT INTO table1 (carID) 
    SELECT carID FROM table2 WHERE table2.carID IN (select carID from table1 where carID is not null)

答案 3 :(得分:1)

您可以只从table2中选择ID,然后在WHERE子句中检查给定的ID。如果table2中没有匹配的行,则SELECT返回空集,并且没有任何内容插入table1中。如果存在具有该ID的行,则将其选中并插入。如果一个ID在table2中可以出现多次,但您只想插入一次,则可以使用DISTINCT

INSERT INTO table1
            (carid) 
            SELECT DISTINCT
                   carid
                   FROM table2
                        WHERE carid = <given carid>;