MySQL选择列名和值作为字段
我有一个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 我
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