mysql 中两个相同表格之间的区别

Difference between two identical tables in mysql

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

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

这些table具有完全相同的创建语句,但行数不同。我不知道是否可以通过使用连接来找到差异。谢谢!

试试 LEFT JOIN ... IS NULL 模式。

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

这是有效的,因为 LEFT JOIN,当在 b 中找不到匹配行时,returns 来自 a 的数据在其结果集中,但值 returns NULL在 b.

ON 条件看起来很毛茸茸。但是查询规划器知道这些字段被索引了,所以它做了正确的事情。