MySQL经典面试SQL汇总

MySQL经典面试SQL汇总

经典案例一.行转列,列转行
1.行转列(顾名思义将多行转多列)
案例:表结构数据如图所示;
在这里插入图片描述
分析:按姓名将一个每个学生的多条分数记录合并成一行记录
slq语句:

##测试行转列(多行变多列)
select user_NAME ,
max(case course when '数学' Then score Else 0 end )数学,
MAX(CASE course WHEN '英语' THEN score ELSE 0 END )英语,
MAX(CASE course WHEN '语文' THEN score ELSE 0 END )语文
from test_tb_grade
group by user_NAME

转换后结果集:
在这里插入图片描述
:在使用group by 进行分组时需要注意出现在group by子语句中的字段可以直接使用,不再其中的字段需要使用聚合函数进行处理;

2.列转行(顾名思义多列转多行)
案例:表结构数据如图所示;
在这里插入图片描述
分析:将每名学生的单科成绩独立成一行记录;
slq语句:

SELECT user_name, '语文' COURSE , CN_SCORE AS SCORE FROM test_tb_grade2
UNION SELECT user_name, '数学' COURSE, MATH_SCORE AS SCORE FROM test_tb_grade2
UNION SELECT user_name, '英语' COURSE, EN_SCORE AS SCORE FROM test_tb_grade2
ORDER BY user_name,COURSE;

:使用UNION关键字可以将多个sql查询的结果集进行整合,最终会形成一个完整的结果集;

持续更新中…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值