MySQL中将多个select语句的查询结果合并一起的方法
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,下文给大家带来有关MySQL中将多个select语句的查询结果合并一起的方法内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完MySQL中将多个select语
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
哈尔滨大商圈互联网科技有限公司
科技股互联网
科技和互联网公司
互联网络科技有限公司
中国 科技 互联网
云电互联网科技
上海喔噻互联网科技
奔汉互联网科技
长亮科技 互联网金融
亿人帮互联网科技
中国互联网有什么科技含量
顶级互联网科技成果有哪些
栖莱科技互联网股份有限公司
成都铂石互联网科技做什么的
互联网为啥属于高科技
赶超互联网科技 微信多开
广州燕处互联网科技有限公司
广东鹅鹅鹅互联网科技有限公司
上海万顺科技互联网有限公司招聘
广州全民伙伴互联网科技有限公司
华服互联网科技靠谱吗
互联网扶贫科技
互联网金融 科技
上海万想互联网科技
互联网科技素材视频竖屏
科技互联网的估值
崇明区互联网教育科技诚信经营
长沙渺峰互联网科技有限公司
科技互联网公司两年变化
如何强化互联网金融科技