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
条件看起来很毛茸茸。但是查询规划器知道这些字段被索引了,所以它做了正确的事情。
我有两个定义完全相同但行数不同的 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
条件看起来很毛茸茸。但是查询规划器知道这些字段被索引了,所以它做了正确的事情。