Pivot SQL 数据 - 将行分组为列

Pivot SQL data - groups rows into columns

我将数据存储在 mySQL 数据库中,格式如下:

+------------+------------+-----------+
|    id      |   field    |   value   |
+============+============+===========+
|     1      |   first    |    Bob    |
+------------+------------+-----------+
|     1      |   last     |   Smith   |
+------------+------------+-----------+
|     2      |   first    |    Jim    |
+------------+------------+-----------+
|     2      |   last     |   Jones   |
+------------+------------+-----------+

我希望它返回如下:

+------------+------------+-----------+
|    id      |   first    |   last    |
+============+============+===========+
|     1      |    Bob     |   Smith   |
+------------+------------+-----------+
|     2      |    Jim     |   Jones   |
+------------+------------+-----------+

我知道这似乎是一种愚蠢的数据存储方式,但这只是我实际拥有的一个简单示例。 table 是从 WordPress 插件以这种方式格式化的,我想让它工作而不必重写插件。

据我所知,我无法将 PIVOT 与 mySql 一起使用。是否有类似于 PIVOT 的东西可以用来实现我的目标?

尝试这个数据透视查询:

SELECT id,
    MAX(CASE WHEN field = 'first' THEN value ELSE NULL END) AS first,
    MAX(CASE WHEN field = 'last'  THEN value ELSE NULL END) AS last
FROM yourTable
GROUP BY id

按照下面的 link 进行 运行 演示:

SQLFiddle

试试这个;)

select
    id,
    max(if(field='first', value, null)) as first,
    max(if(field='last', value, null)) as last
from yourtable
group by id

SQLFiddle DEMO HERE