union all 来实现unpivot的使用方法
时间: 2023-12-27 22:48:01 浏览: 92
SQL行转列、列转行的简单实现
UNPIVOT 是一种将列转换为行的操作,它可以将多个列合并为一列,并将其值作为一个新列的值。在 MySQL 中,可以使用 UNION ALL 关键字来实现 UNPIVOT 操作。
下面是一个示例,假设有以下表格:
```
+----+------+------+------+
| id | col1 | col2 | col3 |
+----+------+------+------+
| 1 | 2 | 3 | 4 |
| 2 | 5 | 6 | 7 |
+----+------+------+------+
```
现在需要将 col1、col2、col3 合并为一列,并将其值作为一个新列的值。可以使用以下 SQL 语句来实现:
```
SELECT id, 'col1' as col_name, col1 as col_value FROM table_name
UNION ALL
SELECT id, 'col2' as col_name, col2 as col_value FROM table_name
UNION ALL
SELECT id, 'col3' as col_name, col3 as col_value FROM table_name;
```
执行以上 SQL 语句后,得到以下结果:
```
+----+----------+-----------+
| id | col_name | col_value |
+----+----------+-----------+
| 1 | col1 | 2 |
| 1 | col2 | 3 |
| 1 | col3 | 4 |
| 2 | col1 | 5 |
| 2 | col2 | 6 |
| 2 | col3 | 7 |
+----+----------+-----------+
```
可以看到,通过使用 UNION ALL 关键字,将三个 SELECT 语句的结果合并为一个结果集,从而实现了 UNPIVOT 操作。
阅读全文