MySQL中将多个select语句的查询结果合并一起的方法
发表于:2024-12-13 作者:千家信息网编辑
千家信息网最后更新 2024年12月13日,下文给大家带来有关MySQL中将多个select语句的查询结果合并一起的方法内容,相信大家一定看过类似的文章。我们给大家带来的有何不同呢?一起来看看正文部分吧,相信看完MySQL中将多个select语
千家信息网最后更新 2024年12月13日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安全错误
数据库的锁怎样保障安全
erp系统数据库组成
考试数据库认证
广东好的软件开发材料
连接数据库下所有表
网络安全数字签名作用
数据库表怎么显示到页面上
软件开发需要学前端吗
ibm服务器电池
财务总监管理软件开发商
浪潮服务器默认管理员网密码
软件开发管理学重点
服务器硬件运行状态怎么获得
深圳携客互联网科技有限公司
网络安全 蓝莲花
手抄报网络安全的
华为会议终端是服务器吗
谁了解软件开发
网络安全周2020 时间
软件开发专升本需要准备什么
python金融软件开发
网络技术三级知识点
圳市旺商网网络技术有限公司
网络安全的爬虫
网络安全技能挑战赛安恒
香港的服务器代码
电脑网络安全模式能重装系统吗
公司的网络安全策略
网络安全主题绘画幼儿园简易画
搞网络技术是干嘛的
学软件开发数学不好可以吗