![](/img/trans.png)
[英]With MySQL, how do I insert into a table on condition that the value does not exist in another table?
[英]How do i insert a value in 1 table if it doesnt exist in another
我有两个几乎相同的表,想将第1个而不是第2个存在的值插入第2个。
我不关心在第二个表中使用缺少的值来更新第一个表,反之亦然。
我尝试了这个选择作为测试,但是即使我知道缺少值也没有返回任何结果
select * from table1 where Not Exists(Select * from table2)
假设您有一个将两个表连接在一起的字段,则可以执行以下操作:
INSERT INTO table2 (id, col1)
SELECT id, col1
FROM table1
WHERE NOT EXISTS (
SELECT 1
FROM table2
WHERE table1.id = table2.id)
您还可以使用NOT IN
和OUTER JOIN
完成相同的操作,但是您仍然需要两个表中的匹配条件。
您可以使用大致如下的INSERT
语句执行此操作:
INSERT INTO TABLE2(Col1, Col2, ...)
SELECT Col1, Col2, ....
FROM TABLE1 t1
WHERE NOT EXISTS
(SELECT 1 FROM Table2 t2 WHERE t2.Criteria = t1.Criteria);
类似地,可以对TABLE2 => TABLE1
进行相反的操作。
您需要指定组成通用标准的列。 请注意,如果将两个表彼此独立地插入(如需求所示),则自动生成的列(例如Guids
或IDENTITY
在两个表中会有所不同,因此不适合作为连接条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.