快速比较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
字段时,结果显示存在差异的数据项
更多推荐
已为社区贡献1条内容
所有评论(0)