Mysql 8 聚合

Mysql 8 Aggregation

我有一个 table 具有这种特定结构

在这里,我们有由不同候选人 (performer) 执行的一系列操作。 对于每个性能,它可以是主要的或次要的(primary 列)。

每个动作只能执行一次,但可以是次要的服务次数

我正在寻找的是我为每个动作获得的结果,主要执行者的姓名和次要执行者的姓名。

这是我要查找的结果:

这可以仅通过 SQL 脚本来完成吗?或者我必须开发一个后端脚本(例如使用 PHP)来格式化数据?

当然,这很容易做到,就像这样:

SELECT  action,
        GROUP_CONCAT(
            CASE
                WHEN T.primary = 1
                THEN performer
            END
        )                   AS  primary,
        GROUP_CONCAT(
            CASE
                WHEN T.primary = 0
                THEN performer
            END
        )                   AS  secondary
FROM    my_table
GROUP BY action