Mysql列转行-union all方法

场景

  • 原数据

在这里插入图片描述

  • 转换为

在这里插入图片描述

建表

  • 创建表
create TABLE user2(
user_name varchar(5),
arms varchar(5),
clothing varchar(10),
shoe varchar(10)
)
  • 插入数据
insert into user2 values('孙悟空','金箍棒','黄金甲','步云履');
insert into user2 values('猪八戒','钉耙','僧衣','僧鞋');
insert into user2 values('沙僧','宝杖','僧衣','僧鞋');
insert into user2 values('唐僧','锡杖','袈裟','僧鞋');
  • 查询数据
select * from user2

在这里插入图片描述

思路

  • 把arms列的数据单独查询出来,并自己添加一列equipment,使其数据全部等于’arms‘。
select user_name,'arms' as equipment,arms from user2 

在这里插入图片描述

  • 把clothing列的数据单独查询出来,并自己添加一列equipment,使其数据全部等于’clothing‘。
select user_name,'clothing' as equipment,clothing from user2 

在这里插入图片描述

  • 把shoe列的数据单独查询出来,并自己添加一列equipment,使其数据全部等于’shoe‘。
select user_name,'shoe' as equipment,shoe from user2 

在这里插入图片描述

结果

  • 使用union all把结果全部拼接起来
select user_name,'arms' as equipment,arms from user2 
UNION ALL
select user_name,'clothing' as equipment,clothing from user2 
UNION ALL
select user_name,'shoe' as equipment,shoe from user2

在这里插入图片描述

  • 做个排序即可得到想要的结果
select user_name,'arms' as equipment,arms from user2 
UNION ALL
select user_name,'clothing' as equipment,clothing from user2 
UNION ALL
select user_name,'shoe' as equipment,shoe from user2 ORDER BY user_name

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值