【发布时间】:2020-10-05 19:54:23
【问题描述】:
是否有一种简单的方法可以在 MySQL 中选择单行并将其转置,以便列标题列在左侧列中,值列在右侧列中?
例子:
而不是这个:
SELECT * FROM sock_table LIMIT 1;
+---------+--------------+------------+
| sock_id | smell_factor | hole_count |
+---------+--------------+------------+
| S000123 | 7.2 | 1 |
+---------+--------------+------------+
...你可以这样做:
SELECT TRANSPOSE(*) FROM sock_table LIMIT 1;
sock_id S000123
smell_factor 7.2
hole_count 1
对于熟悉python-pandas的朋友,df.loc[0](其中0是索引位置)会自动执行这个功能。
这适用于具有数十个列标题的表格,因此输入标题比它的价值更麻烦。
【问题讨论】:
-
对每列使用
UNION的查询。 -
没有任何内置功能可以做到这一点。
-
刚刚更新了我的问题,指出输入列名会破坏目的。也许@Barmar 是对的:缺乏原生功能。
-
如果您不想为每列键入所有子查询,您可以创建一个存储过程,从
INFORMATION_SCHEMA.COLUMNS表中生成动态 SQL。