【问题标题】:How do i insert a value in 1 table if it doesnt exist in another如果另一个表中不存在,我如何在一个表中插入一个值
【发布时间】:2014-07-14 12:38:54
【问题描述】:

我有两个几乎相同的表,并且想将存在于第一个但不存在于第二个的值插入到第二个中。

我不关心用第二个缺失值更新第一个表,反之亦然。

我尝试将此选择作为测试,但即使对于我知道丢失的值,它也没有返回任何内容

select * from table1 where Not Exists(Select * from table2)

【问题讨论】:

    标签: sql sql-server-2008 not-exists


    【解决方案1】:

    假设你有一个字段将两个表连接在一起,这样的事情会起作用:

    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 完成相同的操作,但您仍然需要两个表中的匹配条件。

    【讨论】:

      【解决方案2】:

      您可以使用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 也可以反过来。

      您需要指定哪些列构成通用标准。请注意,如果 2 个表是独立插入的(如要求所示),则自动生成的列(如 GuidsIDENTITY)在 2 个表中会有所不同,并且不适合作为连接条件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-29
        • 2019-01-11
        • 2012-09-17
        • 1970-01-01
        • 1970-01-01
        • 2021-11-17
        • 1970-01-01
        相关资源
        最近更新 更多