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

本文介绍一种使用Mysql的Union与GroupBy语句快速比较两个表中数据差异的方法,通过具体案例演示如何对比不同字段,适用于数据库管理与数据分析场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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字段时,结果显示存在差异的数据项
数据差异比较结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值