MySQL实现:行数据变列式查询(mysql行变列)
人们经常需要将行数据变换为列式数据查询,往往需要使用一系列的SQL语句。这也是MySQL服务器最常见的查询之一。本文将介绍在MySQL服务器中,如何从一个给定表中实现行数据转换为列式查询。
首先,要实现行数据变列式查询,需要使用MySQL中的GROUP BY、PIVOT、UnPIVOT等功能进行处理,下面通过一个例子来讲解。
假设要查询表格students下面每门课程的平均成绩,于是需要将行数据转换为列样式如下:
| student | Chinese | Math | English |
|———|——–|——|———|
| Tom | 90 | 88 | 80 |
| John | 95 | 94 | 82 |
| Jane | 94 | 92 | 82 |
下面是MySQL的查询语句实现的代码示例:
SELECT
max(CASE WHEN course_name= 'Chinese' THEN score ELSE 0 END) as Chinese,max(CASE WHEN course_name='Math' THEN score ELSE 0 END) as Math,
max(CASE WHEN course_name='English' THEN score ELSE 0 END) as English,student
FROM studentsGROUP BY student
我们可以看到,MySQL中的 CASE 语句用于测试一组值,如果 course_name= ‘Chinese’,则返回对应score值;而 MAX() 函数用于对所有行进行筛选,获取最大值。
本文介绍了如何在MySQL服务器中实现行数据变换为列式数据查询,主要需要使用其GROUP BY、PIVOT、UNPIVOT等功能,以及CASE 与 MAX()等函数进行处理实现。通过表格的例子,大家也可以看出MySQL中的语句的确很强大!