sql—mysql中两个相同表之间的差异

56lgkhnf  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(591)

我有两个定义完全相同但行数不同的表。有五个字段是表的部分键(这是两个表的主键)。我想找到一个表中的行,但另一个表中没有。我试着使用exists,但没有成功。

select * from table1 where not exists (select * from table2)

这些表具有完全相同的create语句,但行数不同。我不知道是否有可能找到不同的使用连接。谢谢!

fjnneemd

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 情况看起来很糟。但是查询规划器知道字段是索引的,所以它做了正确的事情。

相关问题