本文实例讲述了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常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

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

本文标题: mysql实用技巧之比较两个表是否有不同数据的方法分析

本文地址: http://www.cppcns.com/shujuku/mysql/296364.html

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

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

    本文实例讲述了mysql比较两个表是否有不同数据的方法.分享给大家供大家参考,具体如下: 在数据迁移中,我们经常需要比较两个表,以便在一个表中标识另一个表中没有相应记录的记录. 例如,我们有一个新的数 ...

  2. mysql记录当前表数据的数据条数据类型_MySQL学习记录:数据类型与操作数据表...

    MySQL默认的端口号是: 3306 MySQL中的超级用户: root 创建数据库 CREATE DATABSE 修改数据库 ALTER DATABASE 删除数据库 DROP DATABASE 登 ...

  3. 比较两组数据的差异用什么图更直观_你真的懂如何展示数据吗?

    ↑ 关注 + 星标 ~ 有趣的不像个技术号每晚九点,我们准时相约  偶尔应金主爸爸要求改时间  大家好,我是朱小五 如何来展现的你的数据?是你有时不得不去思考的一个问题. 不同的展示方法,其效果往往差 ...

  4. mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句

    [数据库设计的三大范式] 1.第一范式(1NF First Normal Fromate):数据表中的每一列(字段),必须是不可拆分的最小单元.也就是确保每一列的原子性. 例如: userInfo: ...

  5. vue一二级联动清空二级数据_【周一实用技巧】二级联动还不够,自动更新才最牛。Excel 2013利用数据验证条件制作一级、二级联动和自动更新下拉列表...

    Excel 2013实用技巧教程系列 第-9.4-节  下拉列表 下拉列表作为提高数据录入效率和防止错误数据的有效方法,在日常工作中应用非常普遍.除了一级.二级联动列表,小编excel小课堂(ID:e ...

  6. mysql查询动态表名的数据类型_Mysql中查询某个数据库中所有表的字段信息

    前言 有时候,需要在数据库中查询一些字段的具体信息,而这些字段又存在于不同的表中,那么我们如何来查询呢? 在每一个数据库链接的information_schema数据库中,存在这样一张表--COLUM ...

  7. mysql创建的数据库都在哪里看_mysql 怎么查看创建的数据库和表

    1. //看当前使用的是哪个数据库 ,如果你还没选择任何数据库,结果是NULL.mysql>select database(); +------------+ | DATABASE() | +- ...

  8. rds mysql 表被删了_MySQL · 捉虫动态 · 删除索引导致表无法打开

    问题背景 最近线上遇到一个问题,用户重启实例后发现有张表打不开了,经调研后发现是用户之前的霸蛮操作导致的,下面给出复现步骤: create table t1 (id int not null prim ...

  9. Win11的两个实用技巧系列之嵌套虚拟化、无法新建Excel表格解决方法

    目录 Win11系统怎么启用嵌套虚拟化?Win11嵌套虚拟化开启方法 解决方法: Win11系统无法新建Excel表格解决方法 解决方法 Win11系统怎么启用嵌套虚拟化?Win11嵌套虚拟化开启方法 ...

  10. Win11的两个实用技巧系列之nvidia控制面板没反应和闪退解决方法

    Win11 nvidia控制面板打开闪退解决方法 有的用户升级了系统之后,打开nvidia控制面板发现突然闪退了,没有办法正常使用.本文就为大家带来了详细的解决方法,需要的朋友一起看看吧 分享Win1 ...

最新文章

  1. 深入理解计算机系统答案2.11,深入理解计算机系统 第十一章
  2. .NET 将数据输出到WORD、EXCEL、TXT、HTM
  3. 经典C语言程序100例之七四
  4. ANSYS CFX 脚本详细设置,实现循环计算
  5. 那些年,画家发明的黑科技
  6. 鸿蒙科技与文化,数字阅读 | “华为鸿蒙”:当现代科技遇到古典文化
  7. * 有1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数? * 把这些数都输出出来,并且输出总共的个数。
  8. A*寻路算法的C#实现
  9. field list什么意思_什么是生物信息学?
  10. TP5路由知识简单个人汇总
  11. Java最新JDK和API下载(持续同步更新于官网)
  12. ppt中控件未在计算机中注册,PowerPoint 中控件没注册是怎么回事?
  13. [转载] 科学家开发的新AI因过于危险而不敢发布
  14. 2021年化工自动化控制仪表考试资料及化工自动化控制仪表免费试题
  15. exchange java ews_Exchange服务器之使用EWS读取Exchange邮件
  16. 网络对抗技术_实验四_恶意代码技术
  17. Javascript中得到中英文混合字符串的长度
  18. R语言问题解决: 不存在叫‘xxx’这个名字的程辑包
  19. 医疗行业S2B2B商城系统
  20. 数据仓库ods层是啥意思_一文读懂大数据仓库建设

热门文章

  1. cce是什么意思_CCE 是什么
  2. coff2omf matlab,OMF和COFF格式有什么区别?
  3. 【收藏的一些博客地址-后端开发】
  4. JS 实现blob与base64互转
  5. python实例02,__str__只能返回字符串
  6. 【转】告诉你外语学习的真实方法及误区分析(精编版)-part 3
  7. 20182319彭淼迪 2019-2020-1 《数据结构与面向对象程序设计》实验一报告
  8. webform如何接收前端的ajax数据,HttpWebResponse Post 前端控件数据,后台如何接收?...
  9. JAVA开发常见单词(*)
  10. 计算机里的硬盘分区,Disk Genius对电脑硬盘分区的详细步骤