mysql中列转行
时间: 2023-06-28 08:11:02 浏览: 57
在 MySQL 中,可以使用 GROUP_CONCAT 函数将多行数据合并成一行,同时使用 CASE 语句实现列转行操作。
例如,有以下表格:
```
+----+-------+-------+-------+
| id | name | grade | score |
+----+-------+-------+-------+
| 1 | Alice | math | 85 |
| 1 | Alice | physics | 90 |
| 2 | Bob | math | 75 |
| 2 | Bob | physics | 80 |
+----+-------+-------+-------+
```
现在需要将 grade 列的值作为新的列,并将 score 列的值填充到新列中。可以使用以下 SQL 语句实现:
```
SELECT id, name,
MAX(CASE WHEN grade = 'math' THEN score END) AS math_score,
MAX(CASE WHEN grade = 'physics' THEN score END) AS physics_score
FROM table_name
GROUP BY id, name;
```
执行以上 SQL 语句后,得到以下结果:
```
+----+-------+------------+---------------+
| id | name | math_score | physics_score |
+----+-------+------------+---------------+
| 1 | Alice | 85 | 90 |
| 2 | Bob | 75 | 80 |
+----+-------+------------+---------------+
```
可以看到,执行以上 SQL 语句后,原先的多行数据被转换成了两行数据,其中 grade 列的值转换成了新的列,score 列的值填充到了对应的新列中。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)