我有两个定义完全相同但行数不同的表。有五个字段是表的部分键(这是两个表的主键)。我想找到一个表中的行,但没有找到另一个表中的行。我尝试按如下方式使用存在,但没有成功。
select * from table1 where not exists (select * from table2)
这些表具有完全相同的创建语句,但行数不同。我不知道是否可以通过使用连接来找到差异。谢谢!
最佳答案
尝试 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
中找不到匹配的行时,会在其结果集中返回 a
中的数据,但对于 中的值返回 NULL b
.
ON
条件看起来很复杂。但查询规划器知道字段已建立索引,因此它会做正确的事情。
关于mysql - mysql中两个相同表的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52449431/