我们有时候使用mysql数据库会涉及到比较两个表中的元素是否全部相同,以往的一般做法是
找出A表中不存在于B表中的数据
方法一:利用not exists
select 字段 from 表A a where not exists(
select 1 from 表B b
where a.字段1 = b.字段1 and a.字段2 = b.字段2.........
)
方法2:利用union all
select 字段 from
(select 字段 from 表A
union all
select 字段 from 表B
)group by 字段
having count(*)=1;
因为相同的数据分组之后count(*)是肯定大于1的
比较上述这两种方法:如果比较字段过多方法一种where条件书写相对复杂,但是方法一可以select出全部的字段,方法2中只能select出group by中的字段。
效率方面应该是方法一更加贴合实际应用,因为只需要对比主键
但我们只是需要临时比对一下两个表数据是否存在不相同时,或者主键是否存在不相同的,或者相同的(count(*)>1)我们就可以使用方法二更加的方便
版权声明:本文为weixin_39838231原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。