快速比较mysql中两个表中的数据是否有差异并找出差异项

Mysql快速比较两个表中的数据是否有差异

1、比较方法:

SELECT *
FROM
 (
   SELECT *
   FROM t1
   UNION ALL
   SELECT *
   FROM t2
)  t
GROUP BY pk, c1
HAVING COUNT(*) = 1
ORDER BY pk

第一个括号中用Union语句合并两个表中的行记录:仅包含需要比较的列。返回结果集用于比较。

Group By后边跟上需要进行比对的字段(两个表都有的) 如上图pk 和c1是表t1和表t2中共有的字段 即可比较表t1和表t2 的pk c1字段数据的差异
没有差异 结果显示为空;若有差异会列出有差异的数据

2、实际案例:比较zhoubao和zhoubaoafter表中的数据是否相同:

比较zhoubao和zhoubaoafter两个表中id字段数据的差异:

SELECT * FROM(
SELECT *  FROM zhoubao UNION ALL SELECT * FROM zhoubaoafter
)  t 
GROUP BY id
HAVING COUNT(*) = 1 ORDER BY id;

比较zhoubao和zhoubaoafter两个表中id、filePath字段数据的差异:

SELECT * FROM(
SELECT *  FROM zhoubao UNION ALL SELECT * FROM zhoubaoafter
)  t 
GROUP BY id,filePath
HAVING COUNT(*) = 1 ORDER BY id;

比较zhoubao和zhoubaoafter两个表中id,useName,filePath,time,week,pingjia字段数据的差异:

SELECT * FROM(
SELECT *  FROM zhoubao UNION ALL SELECT * FROM zhoubaoafter
)  t 
GROUP BY id,userName,filePath,time,week,pingjia  
HAVING COUNT(*) = 1 ORDER BY id;

实验条件:
表zhoubao和表zhoubaoafter在同一个数据库中,有一条数据的filePath字段有所不同 其余全部相同

实验结果:

filepath字段有一项不同,当Group By后边没有filePath字段时,结果显示没有差异

Group By后边有filePath字段时,结果显示存在差异的数据项
数据差异比较结果

  • 8
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值