[英]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.