我有新表:
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
表NEW包含表OLD中的所有值以及一些不在表OLD中的新值。
我需要找到两个表(OLD和NEW)中具有相同Key(列Customer)和相同Date(Date)的Customer以及这些表中的不同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
但由于加入的条件,它显然是错误的。但是我不能在客户上加入它,那么我怎么能以其他方式呢?
谢谢
答案 0 :(得分: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
)