具有键/值对的MySQL表,获取键作为列名
我有一个MySQL数据库,可以在其中执行以下查询:具有键/值对的MySQL表,获取键作为列名,mysql,sql,Mysql,Sql,我有一个MySQL数据库,可以在其中执行以下查询: mysql> SELECT Name, Value from info WHERE ID = 110506; +-------+-----------+ | Name | Value | +-------+-----------+ | start | 228196 | | stop | 228318 | | fwd | 0 | +-------+-----------+ 3 rows in
mysql> SELECT Name, Value from info WHERE ID = 110506;
+-------+-----------+
| Name | Value |
+-------+-----------+
| start | 228196 |
| stop | 228318 |
| fwd | 0 |
+-------+-----------+
3 rows in set (0.00 sec)
我正在尝试构造一个查询,结果将是
+--------+--------+-----+
| start | stop | fwd |
+--------+--------+-----+
| 228196 | 228318 | 0 |
+------- +--------+-----+
1 row in set (0.00 sec)
我事先不知道“我的名字”列中的名字是什么,所以我需要根据
SELECT
query的结果动态设置它们。我该怎么做呢?您可以使用案例
WHEN
子句,并使用与结果集的列名相同的值。您必须应用聚合函数将结果汇总到一行中
下面的示例使用MAX
aggregate函数总结结果
select
max( case `name` when 'start' then `value` end ) as `start`
, max( case `name` when 'stop' then `value` end ) as `stop`
, max( case `name` when 'fwd' then `value` end ) as `fwd`
from `table_name`
;
试试这个
SELECT
MAX(CASE WHEN name = 'start' THEN value END) AS `start`,
MAX(CASE WHEN name = 'stop' THEN value END) AS `stop`,
MAX(CASE WHEN name = 'fwd' THEN value END) AS `fwd`
FROM info
WHERE id = 110506;
最好在应用程序中执行此操作。