找出两个表中的差异

时间:2012-07-30 22:07:36

标签: mysql sql join

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

我猜测会有一个连接语句和一个地方,但我无法弄清楚如何使用这两个串联来创建一个成功的查询。

建议?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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