MySQL unpivot
时间: 2023-07-22 15:33:55 浏览: 103
关于UNPIVOT 操作符
MySQL没有原生的UNPIVOT函数,但可以使用UNION ALL或者UNION操作来模拟实现UNPIVOT操作。
假设有如下的数据表:
```
+----+-------+------+------+------+
| id | name | sub1 | sub2 | sub3 |
+----+-------+------+------+------+
| 1 | Alice | 90 | 80 | 70 |
| 2 | Bob | 60 | 50 | 40 |
+----+-------+------+------+------+
```
需要将每个学生的科目成绩转换为一行,可以使用如下的SQL语句:
```
SELECT id, name, subject, score
FROM (
SELECT id, name, sub1, sub2, sub3
FROM table_name
) t
UNION ALL
SELECT id, name, 'sub2', sub2
FROM table_name
UNION ALL
SELECT id, name, 'sub3', sub3
FROM table_name;
```
以上SQL语句使用UNION ALL操作将每个科目成绩转换为一行。最终的查询结果将包含四列,分别为学生ID、学生姓名、科目名称、成绩。需要注意的是,使用UNION ALL操作可能会产生重复的行,需要使用GROUP BY进行去重。
阅读全文