2013-06-04 74 views
2

我有一个MySQL表看起来是这样的:MySQL的选择列名和值字段

id | PO | DAP | MEDIA 
---|----|-------|------ 
1 | 2 | 34 | 64 
2 | 6 | 53 | 23 

我希望能够查询得到多个行,每列一个。 E.g:

SELECT column_name as column, column_value as value FROM my_table; 

这将使我:

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

什么会我需要使用制定这样的查询?

+0

我看不出问题,甚至'SELECT * FROM my_table'会给你到底请求的结果。格式化它就像你自己的代码的责任,而不是MySQL的,所以在PHP或C#或任何你使用的是这样做。 –

+1

这称为数据透视表查询 - 但为什么不处理应用程序级的显示逻辑,例如用一个简单的PHP循环。 – Strawberry

+0

'你选择PO,DAP,MEDIA FROM YOUR_TABLE'你试过了吗? –

回答

2

你必须首先CONCAT每个指定字段的数据和应用GROUP_CONCAT的结果。

查询

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 

离店SQLFIDDLE

0

不完全确定你的意思。但这种以这种方式做传统

SELECT * FROM my_table; 

你会得到你的阵列这样

array(0=>array('PO'=>2,'DAP'=>34,'MEDIA'=54), 1=>array('PO'=>6, 'DAP'=>53, 'MEDIA'=> 23)) 

..像这样。