本文实例讲述了mysql比较两个表是否有不同数据的方法。分享给大家供大家参考,具体如下:

在数据迁移中,我们经常需要比较两个表,以便在一个表中标识另一个表中没有相应记录的记录。

例如,我们有一个新的数据库,其架构与旧数据库不同。我们的任务是将所有数据从旧数据库迁移到新数据库,并验证数据是否正确迁移。要检查数据,我们必须比较两个表,一个在新数据库中,一个在旧数据库中,并标识不匹配的记录。

假设有两个表:t1和t2。使用以下步骤比较两个表,并确定不匹配的记录,按着常用的思路就是,我们先查t1,完事呢,拿着数据结果集来循环,一条一条的去另一张表中查询,能查到数据,就是正确的,查询不到,就是数据有丢失的现象。

如果真的这样的话,那你可就真的是啊,too young too simple了。这次呢,咱们来介绍一个比较简单的数据对比方案,那就是使用union all关联两张表,完事使用临时表或者说派生表的方式来进行数据对比。先来看下union all的sql实例吧:

SELECT t1.pk, t1.c1

FROM t1

UNION ALL

SELECT t2.pk, t2.c1

FROM t2

完事咱们就先来建立两张表,再插入一些数据,完事就可以进行测试了,先来看建表:

CREATE TABLE t1(

id int auto_increment primary key,

title varchar(255)

);

CREATE TABLE t2(

id int auto_increment primary key,

title varchar(255),

note varchar(255)

);

完事先在t1中插入数据:

INSERT INTO t1(title)

VALUES('row 1'),('row 2'),('row 3');

再来在t2中插入数据:

INSERT INTO t2(title)

VALUES('row 1'),('row 2'),('row 3');

好,咱们接下来就是要使用派生表的方式来对比数据了哦:

SELECT id,title

FROM (

SELECT id, title FROM t1

UNION ALL

SELECT id,title FROM t2

) tbl

GROUP BY id, title

HAVING count(*) = 1

ORDER BY id;

运行之后当然是没有任何返回数据的,因为它们是没有什么差别的。不着急哈,咱们再来在t2表中插入一行数据:

INSERT INTO t2(title,note)

VALUES('new row 4','new');

完事我们再次比较两个表中的title列的值,因为新行是不匹配的行将会返回,我们来看下结果:

mysql> SELECT id,title

FROM (

SELECT id, title FROM t1

UNION ALL

SELECT id,title FROM t2

) tbl

GROUP BY id, title

HAVING count(*) = 1

ORDER BY id;

+----+-----------+

| id | title |

+----+-----------+

| 4 | new row 4 |

+----+-----------+

1 row in set

好啦,这次小技巧就到这里了哦。

希望本文所述对大家MySQL数据库计有所帮助。

两个mysql表对比_mysql实用技巧之比较两个表是否有不同数据的方法分析相关推荐

  1. SQL中 left join 左表合并去重实用技巧

     作者:ZhaoYingChao88 zyc88.blog.csdn.net/article/details/83002882 建表: CREATE TABLE `table1` (`id` int( ...

  2. mysql优化要点_MySQL优化技巧总结

    MySQL优化的几个大方向 ① 硬件优化 ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整 ③ SQL语句方面的优化 ④ 表方面的优化 硬件优化 cpu,内存,硬盘 ...

  3. mysql完全限定表列名_mysql必知必会--联 结 表

    联结 SQL最强大的功能之一就是能在数据检索查询的执行中联结(join) 表.联结是利用SQL的 SELECT 能执行的最重要的操作,很好地理解联结 及其语法是学习SQL的一个极为重要的组成部分 外键 ...

  4. powerdesigner 同步mysql 报错_PowerDesigner实用技巧小结 及 导出word,想字段顺序跟模型中一致,如何设置...

    powerdesigner导出word,想字段顺序跟模型中一致,如何设置 右键List of columns of the table %PARENT% ,selection,define  sort ...

  5. powerdesigner mysql 反引号_PowerDesigner实用技巧小结 及 导出word,想字段顺序跟模型中一致,如何设置...

    powerdesigner导出word,想字段顺序跟模型中一致,如何设置 右键List of columns of the table %PARENT% ,selection,define  sort ...

  6. mysql 查询慢_MySQL查询缓慢的N种原因,以及N+1种解决方法

    昨天查询数据库的时还正常,今早来上班时,SQL语句查询就突然变得很慢了.这样的情况我相信你一定遇到过. 下面就让小编来带你了解其中的原因吧! 本篇文章简单总结了一下可能导致数据库查询慢的原因,希望能给 ...

  7. mysql表对比_MySQL如何比较两个表

    在本教程中,您将学习如何比较两个表以查找不匹配的记录. 在数据迁移中,我们经常需要比较两个表,以识别一个表中的数据和在另一个表中没有相应记录的记录. 例如,我们有一个新的数据库,其模式与旧数据库不同. ...

  8. bash mysql 循环输出_Bash实用技巧:同时循环两个列表

    摘要: 你会学到一种原创的同时循环两个列表的方法.类似于Python或者Haskell的zip函数,非常简洁直观,效果如下: $ paste ( seq 1 5 ) ( seq 129 133 ) | ...

  9. mysql历史命令_MySQL交互技巧

    本文介绍一些与客户端程序mysql进行交互的技巧,这些技巧能帮助我们更有效率地使用它,减少文字输入.此外,还会描述"怎样更加方便地连接到服务器",以及"如何在不经手工输入 ...

最新文章

  1. java 一次性输入与输出_Java入门——(7)IO(输入与输出)
  2. mockito_Mockito – JAXB的RETURNS_DEEP_STUBS
  3. mysql 有always on么,mysql 关于时间类型的刨坑之路
  4. hdu 1599(Floyd求最小环)
  5. python中循环结构关键字,04.循环结构
  6. SpringData ES中字段名和索引中的列名字不一致导致的无法查询数据的解决方法
  7. 动态生成表格、隐藏表格、选中删除任意行、jquery、输入验证
  8. 两个栈实现队列与两个队列实现栈
  9. ROS + OpenCV
  10. Centos-检查文件系统并尝试修复-fsck
  11. Python变量、脚本名称、函数命名规范
  12. STM32F205VCT6主控PLC控制器板,已批量生产
  13. 书评:我看《软件开发沉思录ThoughtWorks文集》
  14. 大学物理(Ⅱ)公式整理
  15. 计算机组装方案背景图,白色系主机的另外一种搭配:联力O11MINI装机作业参考...
  16. linux7配置dns服务,RHEL7 DNS配置
  17. JUNIPER路由器中常用命令总结
  18. Docker创始人兼CTO宣布离职;特斯拉被爆处于破产边缘;iOS更新,支持京沪地铁卡;谷歌安卓侵权案面临88亿美元赔款丨Q新闻...
  19. 内部稽核与内部控制管理体系关系的探讨
  20. Java8新特性:等同 final 效果(Effectively Final)

热门文章

  1. 美国爆料:量子计算机将如何颠覆一切?
  2. 腾云驾雾的计算,让你蒙圈了么?
  3. Android 之父裁员 30%:开发者如何避免“被离职”?
  4. linux部分基础命令总结,Linux常用基础命令总结
  5. python项目部署访问特别卡_【python新人求助】flask+pymssql 通过wsgi发布到Apache,访问接口服务器卡死?...
  6. matlab中instr,MATLAB 串口通信
  7. VS Code 自动保存 码格式化
  8. TortoiseGitPlink提示输入密码解决方法
  9. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(安装依赖包_03)
  10. oracle中prad函数_等保测评2.0:Oracle身份鉴别