2012-08-09 61 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);