2012-07-30 61 views
0

我在数据库中有两个大表。它们都包含一个名为“名称”的列。我的目标是找到包含在一个数据库中但不是另一个数据库中的名称的行。查找两个表中的差异

我猜会有一个加入声明和一个地方,但我不知道如何使用这两个串联为了创建一个成功的查询。

建议?

回答

5
SELECT * FROM TABLE_A WHERE NAME NOT IN 
    (SELECT NAME FROM TABLE_B) 
0

EXISTS可能比IN更快,请参阅Difference between EXISTS and IN in SQL?

你可以像这样使用EXISTS。了解两种方法是有用的,因为它们不完全相同。您可以将EXISTS量词换成SOME, ALL or ANY。我想你可以找出会发生什么:)

select * from a1 where not exists(select 1 from a2 where name=a1.name); 

注意,他们是不是100%相同! SQL有three-valued logic