2015-09-28 51 views
1

任何人都可以帮助我编写以下条件的查询。搜索行在另一个表中不存在

表1

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

表2

 ID  Key 
     2  B 
     3  B 
     5  D 
     6  A 

这些是两个表

我想的查询,其中,ID,其未在Table1存在对应于Table2,从表中删除的地方。

例子:ID = 1行已完全从Table1删除,并在关键的不匹配也会被删除,

例子:ID = 2,存在两个表中,但关键不相同,所以完整的行也从Table1删除不在Table2,我需要一个查询这既适用于条件

在此先感谢

+0

提供DBMS(SQL-服务器,MySQL和Oracle等),期望的结果,你试过吗? –

+0

我写了一个查询不存在的ID'从表1中选择ID其中ID不在(从表2中选择ID)' –

+0

您需要知道谁被删除,谁更改? –

回答

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 
1
SELECT id, [Key] 
FROM table1 
EXCEPT 
SELECT id, [Key] 
FROM table2 
相关问题