我有一个MySQL表看起来是这样的:
id | col_1 | col_2 | col_3
---|-------|-------|------
1 | 2 | 34 | 64
2 | 6 | 53 | 23
我希望能够在ID查询,并得到多行,每列一个。 例如:
SELECT column_name as column, column_value as value FROM my_table WHERE id=1;
这将使我:
column | value
-------|-------
col_1 | 2
col_2 | 34
col_3 | 64
我将需要使用制定这样的查询?
非常感谢
这就是所谓的支点。 其实这是一个反向旋转。 看到这里的一些背景。 http://www.artfulsoftware.com/infotree/queries.php#78
MySQL不会把它的艰辛的道路。 这是一个在颈部疼痛。 很多人谁做很多这方面的工作的MySQL中使用的程序来生成这些查询。
SELECT `column`, column_value
FROM (
SELECT id, 'col_1' as `column`, col_1 as column_value FROM tab
UNION
SELECT id, 'col_2' as `column`, col_2 as column_value FROM tab
UNION
SELECT id, 'col_3' as `column`, col_3 as column_value FROM tab
) pivot
WHERE id=1
你可以不喜欢这样,这将返回给你2个逗号分隔的第二个值的列,您可以爆炸,并合并到PHP键/值数组中的第一个。
SELECT
GROUP_CONCAT(COLUMN_NAME) AS _columns,
(SELECT
GROUP_CONCAT(columnName, ',', columnName)
FROM table_name
WHERE id = 1)
FROM
information_schema.columns
WHERE
table_name = 'table_name'
AND COLUMN_NAME IN ('columnName' , 'columnName');