mysql 两表比对_mysql实现比较两表中的不同元素

我们有时候使用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版权协议,转载请附上原文出处链接和本声明。