MySQL中将多个select语句的查询结果合并一起的方法
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,下文给大家带来有关MySQL中将多个select语句的查询结果合并一起的方法内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完MySQL中将多个select语
千家信息网最后更新 2025年11月07日MySQL中将多个select语句的查询结果合并一起的方法
下文给大家带来有关MySQL中将多个select语句的查询结果合并一起的方法内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完MySQL中将多个select语句的查询结果合并一起的方法你一定会有所收获。
1. 背景
* 全并查询结果是将多个 select 语句的查询结果合并到一起。
* 参与合并的结果集需要字段统一。
* 字段可以用空字符串''代替。
2. 合并查询结果实战 [ users1 and users2 ]
* 查看 users1 表和 users2 表结构
mysql> desc users1;+-------+---------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------+---------------+------+-----+---------+----------------+| id | bigint(20) | NO | PRI | NULL | auto_increment || name | varchar(64) | NO | | NULL | || sex | enum('M','F') | NO | | NULL | || age | int(11) | NO | | NULL | |+-------+---------------+------+-----+---------+----------------+4 rows in set (0.00 sec)mysql> desc users2;+-------+---------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------+---------------+------+-----+---------+----------------+| id | bigint(20) | NO | PRI | NULL | auto_increment || name | varchar(64) | NO | | NULL | || sex | enum('M','F') | NO | | NULL | || age | int(11) | NO | | NULL | |+-------+---------------+------+-----+---------+----------------+4 rows in set (0.01 sec)* 查看 users1 表和 users2 表数据
users1和users2表中有相同字段 tom
mysql> select * from users1;+----+------+-----+-----+| id | name | sex | age |+----+------+-----+-----+| 1 | tom | M | 25 || 2 | jak | F | 42 |+----+------+-----+-----+2 rows in set (0.00 sec)mysql> select * from users2;+----+-------+-----+-----+| id | name | sex | age |+----+-------+-----+-----+| 1 | tom | M | 25 || 2 | lisea | M | 42 |+----+-------+-----+-----+2 rows in set (0.00 sec)
* union 合并并去重
mysql> (select * from users1) union (select * from users2);+----+-------+-----+-----+| id | name | sex | age |+----+-------+-----+-----+| 1 | tom | M | 25 || 2 | jak | F | 42 || 2 | lisea | M | 42 |+----+-------+-----+-----+3 rows in set (0.00 sec)
* union all 只全并不去重
mysql> (select * from users1) union all (select * from users2);+----+-------+-----+-----+| id | name | sex | age |+----+-------+-----+-----+| 1 | tom | M | 25 || 2 | jak | F | 42 || 1 | tom | M | 25 || 2 | lisea | M | 42 |+----+-------+-----+-----+4 rows in set (0.01 sec)
* 查看union 性能分析
[ 使用了临时表 ]
mysql> explain (select * from users1) union (select * from users2);+----+--------------+------------+------------+------+---------------+------+---------+------+------+----------+-----------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+--------------+------------+------------+------+---------------+------+---------+------+------+----------+-----------------+| 1 | PRIMARY | users1 | NULL | ALL | NULL | NULL | NULL | NULL | 2 | 100.00 | NULL || 2 | UNION | users2 | NULL | ALL | NULL | NULL | NULL | NULL | 2 | 100.00 | NULL || NULL | UNION RESULT || NULL | ALL | NULL | NULL | NULL | NULL | NULL | NULL | Using temporary |+----+--------------+------------+------------+------+---------------+------+---------+------+------+----------+-----------------+3 rows in set, 1 warning (0.01 sec)
* 查看union all 性能分析
[ 未使用临时表 ]
mysql> explain (select * from users1) union all (select * from users2);+----+-------------+--------+------------+------+---------------+------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+--------+------------+------+---------------+------+---------+------+------+----------+-------+| 1 | PRIMARY | users1 | NULL | ALL | NULL | NULL | NULL | NULL | 2 | 100.00 | NULL || 2 | UNION | users2 | NULL | ALL | NULL | NULL | NULL | NULL | 2 | 100.00 | NULL |+----+-------------+--------+------------+------+---------------+------+---------+------+------+----------+-------+2 rows in set, 1 warning (0.01 sec)
3. union 与 union all 总结
* union 相对于 union all多了一步去重操作,此操作会创建临时表,降低性能。
* 当两边结果集数据相对都确定了唯一性,推荐使用union all。
4. 总结
以需求驱动技术,技术本身没有优略之分,只有业务之分。
对于上文关于MySQL中将多个select语句的查询结果合并一起的方法,大家觉得是自己想要的吗?如果想要了解更多相关,可以继续关注我们的行业资讯板块。
结果
查询
多个
语句
中将
方法
字段
性能
性能分析
技术
数据
分析
不同
相同
上文
下文
业务
会创
内容
只有
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
参战人员数据库名单
奶块女妖服务器
市公安局网络安全
曲洲老师的网络安全手抄报
广东通用软件开发报价表
上海pdu服务器电源生产厂家
国产数据库持续发展
反诈中心app未连接到服务器
手游数据库
寺庙网络安全宣传
高级软件开发工程师的能力
如何查看所有的数据库
四川什么是网络技术服务工程
中国国家知识专利产权局数据库
端游我的世界服务器在哪找
网站数据库空间
小飞侠 网络安全 百度网盘
网络安全与隐私保护实验室
深圳布吉岛的互联网科技公司
哪个服务器战场快
珠海pc软件开发哪家好
威海宏悦网络技术有限公司
吕梁软件开发均价
东海正规网络技术诚信经营
wps按图表关联数据库
软件开发什么赚钱
专升本数据库常用命令
工信部信息网络安全员培训
花卉网站数据库表
quartz数据库锁的作用