MYSQL函数union all用法之行字段转列

本文介绍了MySQL中UNIONALL的用法,通过实例展示了如何将表格的字段查询结果转换为列显示,并通过多个SELECT语句联合查询实现。内容包括UNIONALL的基本要求和使用场景,以及在处理行转列问题时的步骤,最后强调了UNIONALL在查询中灵活取字段名的能力。

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

先说一下union all的用法和使用情况:

将两个select的结果作为一个整体显示出来。
	
	满足条件:
	1、两个select查询的列的数量必须相同;
	2、每个列的数据类型需要相似;
union all是将两个select语句的结果求并集。 union是将union all的结果下再去除重复数据

具体实例:

之前有遇到一个难题,如何把mysql表格的字段查询出来变成列,选课表sc如图:
在这里插入图片描述

要求查询出来效果如图:
在这里插入图片描述
这个乍一看非常简单,就是查课程名,但是忽略了选课序号这个新字段是从哪里来的?并且选课序号的1、2、3不就是对应着选课表sc中的选课1,选课2,选课3吗,不仅要把字段转为列,还要查询出相应的课程信息。后来了解到有union all这个用法。

整体思路:
采用表格数据如图所示(数据我只添加了几条)
在这里插入图片描述
1.先把sc表中所有的选课1(sc1)查出来,并且将1作为它的选课序号。这样选课序号为1和对应的课程名就出来了。(去掉空值)

select 1 as '选课序号',sc1 as '课程名' from sc where sc1!=''

在这里插入图片描述

2.再把选课2(sc2)查出来,并且将2作为它的选课序号。(去掉空值)

select 2 as '选课序号',sc2 as '课程名' from sc where sc2!=''

在这里插入图片描述
3.选课3也是如上所示

select 3 as '选课序号',sc3 as '课程名' from sc where sc3!=''

在这里插入图片描述

4.完了以后,该查出来的都查出来了,需要将三个查询结果连接起来成一个结果。刚好列的数据类型又相同,不是正好可以使用union all吗!

select 1 as '选课序号',sc1 as '课程名' from sc where sc1!='' 
union all select 2 as '选课序号',sc2 as '课程名' from sc where sc2!=''
union all select 3 as '选课序号',sc3 as '课程名' from sc where sc3!=''

完美查询出我想要的结果
在这里插入图片描述
如果还需要查询其它信息,可以将查询结果当作另一张表,再联合查询。

本次总结:union all可以连接查询结果。使用这么久mysql了,还不知道原来查询的时候可以随便取一个字段并取名显示在查询结果中,例如本次的select 3 as '选课序号',这个3和选课序号都不在我的表格里面,但是查询却可以任意取值并且查出来。还有一种行数据转列的方法也可以使用union all,不过除了这个函数以外应该还要用到case when函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值