MySQL数据库行列转换查询,你知道吗
一. 前言
不知道小伙伴们发现没有,在面试中,数据库的查询都是必问的!更有甚者,面试官会直接让我们在答题纸上手写SQL代码。其中数据库表的行列转换查询,就是经常考察的一道题目!
二. 行转列需求展示
我们先来看看MySQL实现行转列查询的一个需求。
先给大家展示一下效果图,按行查询的结果如下图所示:

行转列后查询的结果如下图所示:

三. 代码实现

此处用到max函数,这主要是为了将无数据的字段设置为0,防止出现字段值为NULL造成出错异常。
四. 列转行需求
我们再来看看MySQL实现列转行查询的一个需求。
现创建表test2,在未转换前查询结果如下:

列转行的sql语句:
select user_name,'语文' COURSE,CN_SCORE as SCORE from test2
union select user_name,'数学' COURSE,MATH_SCORE as SCORE from test2
union select user_name,'英语' COURSE,EN_SCORE as SCORE from test2 order by user_name,COURSE;
列转行查询的结果如下图所示:

五. 小结
最后给大家总结一下,无论是行转列或者是列转行,关键就是sql子句的使用。小伙伴们可以对照代码多练习加深理解,下次再遇见类似的问题应该就不成问题啦!