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 进行 运行 演示:
试试这个;)
select
id,
max(if(field='first', value, null)) as first,
max(if(field='last', value, null)) as last
from yourtable
group by id
我将数据存储在 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 进行 运行 演示:
试试这个;)
select
id,
max(if(field='first', value, null)) as first,
max(if(field='last', value, null)) as last
from yourtable
group by id