我在数据库中有两个大表。它们都包含一个名为“名称”的列。我的目标是找到包含在一个数据库中但不在另一个数据库中的名称的行。
我猜会有一个join语句和一个where,但我不知道如何同时使用这两个语句来创建一个成功的查询。
建议?
SELECT * FROM TABLE_A WHERE NAME NOT IN
( SELECT NAME FROM TABLE_B )
EXISTS 可能比 IN 快,请参阅SQL 中 EXISTS 和 IN 的区别?.
您可以像这样使用 EXISTS。了解这两种方法很有用,因为它们并不完全相等。您可以将 EXISTS 量词交换为SOME、ALL 或 ANY。我想你可以弄清楚会发生什么:)
select * from a1 where not exists(select 1 from a2 where name=a1.name);
请注意,它们不是 100% 相等的!SQL具有三值逻辑!