[英]Sql insert if row does not exist
我有3个表叫做table1
table2
和table3
。 在table3
中包含已记录table1.id
和table2.id
等一些列也是如此。 所以我需要做以下事情。 对于表1中的每条记录,我需要查看table3中是否有一行包含table1.id和任何其他table2.id如果没有这样的记录我想插入它。
所以这是一个例子。
假设table1
1 ... ... ...
2 ... ... ...
表2
10 .. .. ..
20 .. .. ..
表3
1 | 10 .. .. ..
2 | 20 .. .. ..
我需要补充一下
1 20 .. .. ..
和2 10 .. .. ..
行到table1.id
因为table1.id
1它没有所有table2.id
s(在这种情况下为20)和table1.id
2它也没有包含所有table2.id
s(在本例中为10)的行。 任何帮助,将不胜感激
如果我做得对,试试这个:
INSERT INTO Table3 (Table1_id,Table2_id)
SELECT Tablei.id,Table2.id FROM Table1,Table2
WHERE NOT EXISTS (SELECT 1
FROM Table3
WHERE Table3.Table1_id=Table1.ID
AND
Table3.Table2_id=Table2.ID)
试试这个:
IF NOT EXISTS(SELECT 1 FROM Table3 WHERE Table3.Table1_ID = Table1.ID AND Table3.Table2_ID = Table2.ID)
INSERT INTO Table3(Table1_ID, Table2_ID) VALUES (ID1,ID2)
END IF
您还可以进行cross join
,并插入该交叉连接中不存在的组合。
insert into table3(col1, col2)
select t.a, t.b
from table3
right join (select table1.col as a, table2.col as b
from table1
cross join table2) t on t.a = table3.col1 and t.b = table3.col2
where table3.col1 is null
and table3.col2 is null;
另一种语法是:
INSERT INTO t3 (t1id, t2id )
SELECT
t1.id
, t2.id
FROM
t1,t2
EXCEPT
SELECT t1id, t2id from t3
此外,您可以在t1和t2上添加触发器以自动完成任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.