MySQL选择列名和值作为字段

MySQL选择列名和值作为字段,mysql,sql,Mysql,Sql,我有一个mysql表,看起来像这样: id | PO | DAP | MEDIA ---|----|-------|------ 1 | 2 | 34 | 64 2 | 6 | 53 | 23 我希望能够查询得到多行,每列一行。例如: SELECT column_name as column, column_value as value FROM my_table; 这将给我: PO=2,DAP=34,MEDIA=54,PO=6,DAP=53,MEDIA=23 我

我有一个mysql表,看起来像这样:

id | PO | DAP   | MEDIA
---|----|-------|------
1  | 2  | 34    | 64
2  | 6  | 53    | 23
我希望能够查询得到多行,每列一行。例如:

SELECT column_name as column, column_value as value FROM my_table; 
这将给我:

PO=2,DAP=34,MEDIA=54,PO=6,DAP=53,MEDIA=23

我需要用什么来表达这样的查询?

不太清楚您的意思。但传统上是这样做的

SELECT * FROM my_table;
你会得到这样的数组

array(0=>array('PO'=>2,'DAP'=>34,'MEDIA'=54), 1=>array('PO'=>6, 'DAP'=>53, 'MEDIA'=> 23))
。。与此类似。

您必须首先计算每个指定字段的数据,然后在结果上应用GROUP_CONCAT

质疑


签出

我看不出问题,即使从我的表格中选择*也会给出准确的结果。格式化它是你自己的责任,而不是MySQL,所以在PHP或C或你正在使用的任何东西中都要这样做。这称为pivot表查询-但是为什么不在应用程序级别处理显示逻辑,例如使用一个简单的PHP循环。从你的_表中选择PO、DAP、媒体你试过吗?选择CONCAT'PO=,采购订单作为采购订单价值?
SELECT GROUP_CONCAT(temp_col) FROM
(
    SELECT 1 as 'temp_id',
    CONCAT(
      CONCAT('PO=', PO),
      ',',
      CONCAT('DAP=', DAP),
      ',',
      CONCAT('MEDIA=', MEDIA)
    ) AS 'temp_col'
    FROM test
) temp
GROUP BY temp_id