从存储过程结果中删除重复的列行并连接其他列

Remove Duplicate Column Rows from Stored Procedure Result and concatenate other column

我有存储过程的代码:

BEGIN
    SELECT teams.name,
            IFNULL(users.email,'N/A') as email,
            IFNULL(users.name,'N/A') as user_name,
            IFNULL(team_user.role,'N/A') as role
    FROM teams
        LEFT JOIN team_user ON teams.id=team_user.team_id
        LEFT JOIN users ON team_user.user_id=users.id
    WHERE role is NULL
    OR role='admin';
END

我想在 table 中显示存储过程的结果。以下是它显示的 table 的示例:

团队名称 用户名
团队 1 AdminUser1ForTeam1
团队 1 AdminUser2ForTeam1
第 2 队 AdminUser1ForTeam1
三队 AdminUser1ForTeam3
三队 AdminUser2ForTeam3

这个 table 的问题是,如果一个团队有超过 1 个管理员,团队名称将在两个单独的行中重复。以下是我想要达到的结果:

团队名称 用户名
团队 1 AdminUser1ForTeam1, AdminUser2ForTeam1
第 2 队 AdminUser1ForTeam1
三队 AdminUser1ForTeam3, AdminUser2ForTeam3

我尝试使用 group_concat,但是无法检测团队名称何时重复。 我也可以使用 php 来尝试实现结果。非常感谢任何帮助!

使用聚合。我怀疑你真的想要:

SELECT t.name,
        COALESCE(GROUP_CONCAT(u.email), 'N/A') as email,
        COALESCE(GROUP_CONCAT(u.name), 'N/A') as user_name,
        COALESCE(GROUP_CONCAT(tu.role), 'N/A') as role
FROM teams t LEFT JOIN
     team_user tu
     ON t.id = tu.team_id AND tu.role = 'admin' LEFT JOIN
     users u
     ON tu.user_id = u.id
GROUP BY t.name