当前位置:网站首页>MySQL查询两张表属性值非重复的数据
MySQL查询两张表属性值非重复的数据
2022-04-23 08:24:00 【tag心动】
前言
在数据迁移中,我们经常需要比较两个表,以便在一个表中标识另一个表中没有相应记录的记录。
例如,我们有一个新的数据库,其架构与旧数据库不同。我们的任务是将所有数据从旧数据库迁移到新数据库,并验证数据是否正确迁移。要检查数据,我们必须比较两个表,一个在新数据库中,一个在旧数据库中,并标识不匹配的记录。
接下来我们使用union all关联两张表,完事使用临时表或者说派生表的方式来进行数据对比~
一、准备工作
创建表:t1
DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1` (
`tid` tinyint(4) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
`age` int(11) NULL DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`tid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
表:t1插入一条数据
INSERT INTO `t1` VALUES (1, '张三', 18);
创建表:t2
DROP TABLE IF EXISTS `t2`;
CREATE TABLE `t2` (
`tid` tinyint(4) NOT NULL AUTO_INCREMENT,
`nickname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '昵称',
`age` int(11) NULL DEFAULT NULL COMMENT '年龄',
`gender` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '性别',
PRIMARY KEY (`tid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
表:t2插入一条数据
INSERT INTO `t2` VALUES (1, '张三', 18, '男');
注意:可以看到t1、t2表属性值对应都是一样的


二、使用测试
SQL:
SELECT
tid,
nickname,
age
FROM
( SELECT tid, nickname, age FROM t1 UNION ALL SELECT tid, nickname, age FROM t2 ) tbl
GROUP BY
tid,
nickname,
age
HAVING
count(*) = 1
ORDER BY
tid;

运行之后当然是没有任何返回数据的,因为它们是没有什么差别的。不着急哈,咱们再来在t2表中插入一行数据:
INSERT INTO t2 ( nickname, age, gender )
VALUES
( '李四', 18, '男' );

再次执行SQL(因为‘李四’这条数据,表t1、t2相关属性值两表不存在重复就会查询出来):

版权声明
本文为[tag心动]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_36565692/article/details/124356444
边栏推荐
- Go语言自学系列 | golang结构体指针
- excle加水印
- LeetCode-199-二叉树的右视图
- 跨域配置报错: When allowCredentials is true, allowedOrigins cannot contain the special value “*“
- K210学习笔记(二) K210与STM32进行串口通信
- 让地球少些“碳”息 度能在路上
- PgSQL wants to implement all kinds of column sub query operations of MySQL
- 面了一圈,整理了这套面试题。。
- 记录:js删除数组中某一项或几项的几种方法
- An example of network communication based on TCP / IP protocol -- file transmission
猜你喜欢

excle加水印

idea底栏打开services

Excle plus watermark

一个必看的微信小程序开发指南1-基础知识了解

STM32使用HAL库,整体结构和函数原理介绍
![[learning] audio and video development from scratch (9) -- nuplayer](/img/62/20b0d80088181fb6ff1fe842500c0a.png)
[learning] audio and video development from scratch (9) -- nuplayer

Yangtao electronic STM32 Internet of things entry 30 step notes IV. engineering compilation and download

SYS_CONNECT_BY_PATH(column,'char') 结合 start with ... connect by prior

IDEA导入commons-logging-1.2.jar包

Use of Arthas in JVM tools
随机推荐
Overview of bus structure
《深度学习》学习笔记(八)
Harbor企业级镜像管理系统实战
form中enctype属性
okcc呼叫中心外呼系统智能系统需要用多大的盘存录音?
Word plus watermark
swagger文档导出自定义v2/api-docs拦截
虚拟线上展会-线上vr展馆实现24h沉浸式看展
【深度好文】Flink SQL流批⼀体化技术详解(一)
Introduction to protobuf
ESP32程序下载失败,提示超时
Ear acupoint diagnosis and treatment essay 0421
ELK生产实践
【精品】利用动态代理实现事务统一管理 二
匿名类型(C# 指南 基础知识)
Goland 调试go使用-大白记录
经典题目刷一刷
一个必看的微信小程序开发指南1-基础知识了解
One click cleanup of pycharm and jupyter cache files under the project
Add listening event to input element