搜索行不存在于另一个表中

时间:2015-09-28 12:36:30

标签: sql sql-server

任何人都可以帮我写下面条件的查询。

表1

        ID    Key
        1      A
        2      A
        4      C
        5      D
        6      A

表2

        ID     Key
         2      B
         3      B
         5      D
         6      A

这是两个表

我想要一个查询,其中Table1中不存在与Table2对应的ID,从表中删除。

示例:ID = 1行已从Table1完全删除,且哪个密钥不匹配也被删除

示例:ID = 2,两个表中都存在,但密钥不相同,因此完整行也会从Table1中删除而不是Table2,我需要一个适用于这两个的查询条件

提前致谢

2 个答案:

答案 0 :(得分:1)

SELECT id, [Key] 
FROM table1
EXCEPT
SELECT id, [Key] 
FROM table2

答案 1 :(得分:0)

您可以尝试检查以下内容是否存在:

DELETE FROM Table1
WHERE NOT EXISTS (
             SELECT 1
             FROM Table2 t2
             WHERE Table1.Id = t2.Id  
                  )
       OR EXISTS (
             SELECT 1
             FROM Table2 t2
             WHERE Table1.Id = t2.Id AND Table1.[Key] <> t2.[Key]
                  )

<强>输出

ID  Key
5   D
6   A