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

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

被折叠的 条评论
为什么被折叠?



