我在数据库中有两个大表。它们都包含一个名为“name”的列。我的目标是找到包含一个数据库但不包含另一个数据库的名称的行。
我猜测会有一个连接语句和一个地方,但我无法弄清楚如何使用这两个串联来创建一个成功的查询。
建议?
答案 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!