我有两个定义完全相同但行数不同的表。有五个字段是表的部分键(这是两个表的主键)。我想找到一个表中的行,但另一个表中没有。我试着使用exists,但没有成功。
select * from table1 where not exists (select * from table2)
这些表具有完全相同的create语句,但行数不同。我不知道是否有可能找到不同的使用连接。谢谢!
fjnneemd1#
尝试左连接。。。为空模式。
SELECT a.* FROM table1 a LEFT JOIN tableb b ON a.f1 = b.f1 AND a.f2 = b.f2 AND a.f3 = b.f3 AND a.f4 = b.f4 AND a.f5 = b.f5 WHERE b.f1 IS NULL
这是因为在中找不到匹配的行时,使用左连接 b ,返回来自 a 但为中的值返回null b .这个 ON 情况看起来很糟。但是查询规划器知道字段是索引的,所以它做了正确的事情。
b
a
ON
1条答案
按热度按时间fjnneemd1#
尝试左连接。。。为空模式。
这是因为在中找不到匹配的行时,使用左连接
b
,返回来自a
但为中的值返回nullb
.这个
ON
情况看起来很糟。但是查询规划器知道字段是索引的,所以它做了正确的事情。