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 students
GROUP BY student

我们可以看到,MySQL中的 CASE 语句用于测试一组值,如果 course_name= ‘Chinese’,则返回对应score值;而 MAX() 函数用于对所有行进行筛选,获取最大值。

本文介绍了如何在MySQL服务器中实现行数据变换为列式数据查询,主要需要使用其GROUP BY、PIVOT、UNPIVOT等功能,以及CASE 与 MAX()等函数进行处理实现。通过表格的例子,大家也可以看出MySQL中的语句的确很强大!


数据运维技术 » MySQL实现:行数据变列式查询(mysql行变列)