MySQL数据库——组合查询

本文介绍了如何在MySQL中利用UNION操作符执行组合查询,将多个SELECT语句的结果合并为一个结果集。讨论了组合查询的适用场景、UNION的规则,包括列数、列类型兼容性等。此外,还提到了如何通过UNION ALL保留重复行,以及在组合查询中对结果进行排序的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这一次说下如何利用UNION操作符实现组合查询,即将多条SELECT语句组合成一个结果集。

我们目前每次使用数据库查询都是用单个SELECT来用的,但是MySQL也允许执行多个查询,就是说多个SELECT,但是是一个结果集。这样的组合查询称为并(union),也叫复合查询。

有两种情况,我们需要用到组合查询:
1.在单个查询中从不同的表返回类似结构的数据;
2.对单个表执行多个查询,按单个查询返回数据;

TIP: 组合查询和多个WHERE条件 。 我们可以发现,多数情况下,组合相同表的两个查询和多个WHERE子句条件的单SELECT查询功能类似。但是从性能上讲,我们可以实验一下,看看哪个更好。

part 1 创建组合查询

可用UNION操作符来组合多条SQL语句。

SELECT coder.name FROM coder UNION SELECT git.name FROM git;

可以看见,这条语句由前面两条SELECT语句组成,语句中用UNION关键字分隔。
UNION只是MySQL执行两条SELECT语句,并把输出组合成单个查询结果集。

part 2 组合查询的UNION的规则

1.UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔,所以说如果是4条SELECT语句,需要使用三个UNION关键字。

2.UNION中每个SELECT查询必须包含相同的列、表达式或聚集函数,不过各列不必以相同的顺序出现。

3.列数据类型必须兼容,就是说类型不必完全相同,但是必须是数据库可以隐含转换的类型。

part 3 包含或取消重复的行

不过说 我们只要改一下刚刚的例子就可以

SELECT coder.name FROM coder UNION ALL SELECT git.name FROM git;

在上面返回的结果集中,会发现他是包含重复name行地! 就是说,我们UNION查询在结果集中默认去除了重复的行,这是默认行为,但是如果需要我们可以改变他,我们可以用UNION ALL返回所有匹配的行。

part 4 对组合查询结果进行排序

我们还是看例子吧:

SELECT coder.name FROM coder UNION ALL SELECT git.name FROM git ORDER BY name;

在UNION组合查询中,只能使用一条ORDER BY子句,他必须出啊现在最后一条SELECT语句之后。 但是这个排序是作用于最终的结果集地,不存在排序一部分的问题,也不能使用多条 ORDER BY 子句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值