mysql8.0如何实现多列转行
时间: 2023-07-04 15:07:08 浏览: 159
新版MySQL8.0在线yum安装和二进制安装、配置多版本多实例
在MySQL 8.0中,你可以使用UNION ALL和CASE语句来实现多列转行。以下是一个示例:
假设有以下表:
```
CREATE TABLE test (
id INT,
col1 VARCHAR(10),
col2 VARCHAR(10),
col3 VARCHAR(10)
);
INSERT INTO test VALUES (1, 'a', 'b', 'c');
INSERT INTO test VALUES (2, 'd', 'e', 'f');
```
要将多列转行,可以使用以下查询:
```
SELECT id, 'col1' AS col_name, col1 AS col_value FROM test
UNION ALL
SELECT id, 'col2' AS col_name, col2 AS col_value FROM test
UNION ALL
SELECT id, 'col3' AS col_name, col3 AS col_value FROM test;
```
这将返回以下结果:
```
+----+----------+-----------+
| id | col_name | col_value |
+----+----------+-----------+
| 1 | col1 | a |
| 2 | col1 | d |
| 1 | col2 | b |
| 2 | col2 | e |
| 1 | col3 | c |
| 2 | col3 | f |
+----+----------+-----------+
```
在查询中,首先将每个列名作为“col_name”列选择,并将实际列值选择为“col_value”列。然后使用UNION ALL将结果组合在一起。
阅读全文