2014-11-03 23 views
0

新的價值觀我有表NEW:查找新表

Customer Date  Id 
1   201401  9 
1   201401  1 
1   201402  2 
2   201404  3 
2   201404  4 
3   201406  5 
4   201408  6 

而且表OLD:

Customer Date  Id 
1   201401  1 
1   201402  2 
2   201404  3 
2   201404  4 
3   201406  5 
4   201408  6 

表新建了從表OLD一些新的不在表OLD所有值加。

我需要找到在兩個表(舊和新)中具有相同鍵(列客戶)和相同日期(日期)以及這些表中的不同ID的客戶。

所以SELECT應該在這種情況下,只返回

1   201401  9 

我想簡單連接:

SELECT * 
FROM NEW n 
LEFT JOIN OLD o ON n.ID = o.ID 
WHERE n.Date = o.Date 
AND n.ID <> o.ID 

但它顯然是錯誤的,因爲對於加入的條件。但是我無法加入到客戶中,所以我該怎麼做呢?

謝謝

回答

1

你可以使用EXISTS/NOT EXISTS

SELECT n.* 
FROM NEW n 
WHERE EXISTS(
    SELECT 1 FROM Old o 
    WHERE n.Customer = o.Customer AND n.Date = o.Date 
    AND n.ID <> o.ID 
) 
AND NOT EXISTS(
    SELECT 1 FROM Old o 
    WHERE n.Customer = o.Customer AND n.Date = o.Date 
    AND n.ID = o.ID 
) 

Demo