mysql 是否有更好的解决方案使sql结果成为一行?

o0lyfsai  于 2022-10-31  发布在  Mysql
关注(0)|答案(1)|浏览(151)

现在我有了一个表test_table,其中包含一些数据,如下所示:(id-type是唯一索引)
| 标识符|类型|价值|
| - -|- -|- -|
| 一个|X射线|一种|
| 一个|Y形|B|
| 2个|X射线|AA公司|
和sql:

SELECT id,
       group_concat(IF(type = 'x', value, NULL) SEPARATOR '') AS 'x',
       group_concat(IF(type = 'y', value, NULL) SEPARATOR '') AS 'y'
FROM test_table
GROUP BY id;

我得到这样的结果:
| 标识符|X射线|Y形|
| - -|- -|- -|
| 一个|一种|B|
| 2个|AA公司|零值|
它使“类型”成为一个列。那么这是获得相同结果的更好方法吗?
更好的sql来实现我的问题~

e4yzc0pl

e4yzc0pl1#

使用条件聚合:

SELECT
    id,
    MAX(CASE WHEN type = 'x' THEN value END) AS x,
    MAX(CASE WHEN type = 'y' THEN value END) AS y
FROM test_table
GROUP BY id
ORDER BY id;

相关问题