MYSQL根据特定列选择多个列

MYSQL根据特定列选择多个列,mysql,select,merge,group-by,nested-select,Mysql,Select,Merge,Group By,Nested Select,我想做一个SELECT请求,根据平台的价值管理两列价值(桌面和移动) 下面是一个示例表: +----+---------+------+----------+-------+ | ID | PROJECT | NAME | PLATFORM | VALUE | +----+---------+------+----------+-------+ | 1 | 1 | Foo | desktop | 1 | | 2 | 1 | Foo | mobile

我想做一个SELECT请求,根据平台的价值管理两列价值(桌面和移动)

下面是一个示例表:

+----+---------+------+----------+-------+
| ID | PROJECT | NAME | PLATFORM | VALUE |
+----+---------+------+----------+-------+
|  1 |       1 | Foo  | desktop  |     1 |
|  2 |       1 | Foo  | mobile   |    42 |
|  3 |       1 | Bar  | desktop  |     3 |
|  4 |       1 | Bar  | mobile   |    10 |
|  5 |       2 | Foo  | desktop  |     2 |
|  6 |       2 | Bar  | mobile   |     9 |
+----+---------+------+----------+-------+
期望输出:

+---------+------+---------+--------+
| PROJECT | NAME | DESKTOP | MOBILE |
+---------+------+---------+--------+
|       1 | Foo  | 1       | 42     |
|       1 | Bar  | 3       | 10     |
|       2 | Foo  | 2       | NULL   |
|       2 | Bar  | NULL    | 9      |
+---------+------+---------+--------+
我尝试的是:

SELECT project, name,
(CASE platform WHEN 'desktop' THEN value END) AS "desktop",
(CASE platform WHEN 'mobile' THEN value END) AS "mobile"
FROM test
GROUP BY name, project
ORDER BY project, value ASC

+---------+------+---------+--------+
| project | name | desktop | mobile |
+---------+------+---------+--------+
|       1 | Foo  | 1       | NULL   |
|       1 | Bar  | 3       | NULL   |
|       2 | Foo  | 2       | NULL   |
|       2 | Bar  | NULL    | 9      |
+---------+------+---------+--------+
试试这个:

SELECT project, NAME, MAX(desktop) AS desktop, MAX(mobile) AS mobile FROM (
    SELECT project, NAME,
    (CASE platform WHEN 'desktop' THEN VALUE END) AS "desktop",
    (CASE platform WHEN 'mobile' THEN VALUE END) AS "mobile"
    FROM test
    ) AS aa
GROUP BY aa.NAME, aa.project
ORDER BY aa.project
说明:

project name   desktop mobile
1       Foo       1       42
1       Bar       3       10
2       Foo       2       NULL
2       Bar       NULL    9
首先对所有数据进行选择(aa),根据平台内容扩展价值

然后将该选择用作分组数据的原点

结果:

project name   desktop mobile
1       Foo       1       42
1       Bar       3       10
2       Foo       2       NULL
2       Bar       NULL    9

你非常接近:-)你有什么建议吗?D:@Sebas