2012-08-09 57 views
2

我有一個存儲過程,它將(或應該)記錄從一個表移動到另一個表。不過我現在要創建在「表B」查詢兩個表的重複值

SELECT A.Num, B.Num 
FROM TableA AS A 
LEFT JOIN TableB AS B ON A.Num = B.Num 
WHERE B.Num IS NULL 

基本上,我想拉出任何數量的檢查數據「表A」對數據的過程,它是不是在「表B」,但在'TableA',是一個LEFT JOIN的方式來做到這一點?到目前爲止,我一直未能找到丟失的文件,我已經刪除了一些文件以構成測試用例。

+1

是的,這是正確的。你只需要'SELECT A.Num',不需要選擇'B.Num',它將會是'NULL'。 – 2012-08-09 14:37:53

+0

是的,左連接是實現它的方法。你的查詢看起來很好。 – 2012-08-09 14:37:56

回答

6

您可以使用not exists

SELECT * 
FROM TableA A 
WHERE NOT EXISTS (SELECT *  
        FROM TableB B 
        WHERE A.NUM = B.NUM); 

not in

SELECT * 
FROM TableA A 
WHERE A.NUM not in (SELECT B.NUM 
        FROM TableB B); 
+0

Thnx,來這裏有點晚了。 – Irfan 2017-11-23 08:17:51

2
SELECT Num from TableA 
EXCEPT 
SELECT Num from TableB 
2
select * from tableA 
where id not in (select id from tableB) 

select * from tableA a 
left join tableB b on a.id = b.id 
where b.id is null 
0
select * from tableA 
where id in (select id from tableB);