2015-09-28 52 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 
相關問題