MySQL动态列查询

发布时间: 2023-11-21 12:58 阅读: 文章来源:1MUMB4594PS

一. 前言

不知道小伙伴们发现没有,在面试中,数据库的查询都是必问的!更有甚者,面试官会直接让我们在答题纸上手写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子句的使用。小伙伴们可以对照代码多练习加深理解,下次再遇见类似的问题应该就不成问题啦!

•••展开全文