繁体   English   中英

如果一个值不存在于另一个表中,如何在其中插入一个值

[英]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 INOUTER 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进行相反的操作。

您需要指定组成通用标准的列。 请注意,如果将两个表彼此独立地插入(如需求所示),则自动生成的列(例如GuidsIDENTITY在两个表中会有所不同,因此不适合作为连接条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM