0

我是旋转的新手,所以我来这里寻求一些建议。我有一个包含字段 benchmarkname 和 value 的表。但是,另一个表的填充方式不同并且超出了我的控制:它将每个基准名称作为表中自己的字段,行值是值。布局如下:

表格1

+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| stream    | double      | YES  |     | NULL    |       |
| pisec     | double      | YES  |     | NULL    |       |
| iozws     | double      | YES  |     | NULL    |       |
| iozwb     | double      | YES  |     | NULL    |       |
| iozrs     | double      | YES  |     | NULL    |       |
| iozrb     | double      | YES  |     | NULL    |       |

表 2

| BenchmarkName | varbinary(43) | YES  |     | NULL    |       |
| Value       | decimal(14,0) | YES  |     | NULL    |       |

我的问题是:如何动态地将第一个表转换为第二个表?我相信答案在于一个支点,但我不确定。

4

1 回答 1

1

我想你想取消第一张表。UNPIVOTing 从列中获取数据并将其转换为行。MySQL 没有 unpivot,因此您必须使用UNION ALL查询:

select 'stream' BenchmarkName, stream value
from table1
union all
select 'pisec' BenchmarkName, pisec value
from table1
union all
select 'iozws' BenchmarkName, iozws value
from table1
union all
select 'iozwb' BenchmarkName, iozwb value
from table1
union all
select 'iozrs' BenchmarkName, iozrs value
from table1
union all
select 'iozrb' BenchmarkName, iozrb value
from table1
于 2013-01-03T16:14:18.460 回答