MySQL将行值连接为列名

时间:2018-06-13 09:41:36

标签: mysql sql join

我搜索了几个小时,但我找不到解决问题的方法。

我有一个查询产生一个2列表,如:

key            value
str01          color
str03          size
str04          length
str07          width
str08          height
str09          propertyXY

另一个以str01到str10作为列名的表。

id    str01    str02    str03    str04    ...
1     blue     NULL     big      123m           

是否可以使用一个队列检索以下内容?

id    color    size    length    ...
1     blue     big     123m           

(注意第一个队列结果中不存在str02) 所以基本上我想根据上面提到的子查询动态地重命名最终输出查询的列名。

如果有人知道如何处理这个问题会很棒。

1 个答案:

答案 0 :(得分:0)

您可以像下面那样转换您的列,除了不可能。

mysql> select id,
    -> str01 as color,
    -> str02 as property_1,
    -> str03 as size,
    -> str04 as length,
    -> str05 as property_2,
    -> str06 as property_3,
    -> str07 as width,
    -> str08 as height,
    -> str09 as propertyXY,
    -> str10 as property_4
    -> from tx2;
+------+-------+------------+------+--------+------------+------------+-------+--------+------------+------------+
| id   | color | property_1 | size | length | property_2 | property_3 | width | height | propertyXY | property_4 |
+------+-------+------------+------+--------+------------+------------+-------+--------+------------+------------+
|    1 | blue  | NULL       | big  | 123m   | NULL       | NULL       | NULL  | NULL   | NULL       | NULL       |
+------+-------+------------+------+--------+------------+------------+-------+--------+------------+------------+
1 row in set (0.00 sec)