Select 在 mysql 中使用 GROUP_CONCAT 查询

Select query with GROUP_CONCAT in mysql

我有两个 table 看起来像。

用户

id       name
10       dani
 9       mark
 8       himel
 7       dipu

config_project

id    assignee_web  assignee_app  assignee_qa
29       10,7,9       10,7          10,9
28        10,8       9,10,7          8

这里,assignee_webassignee_appassignee_qa 都是 users table 的 id 的参考 id。现在我想要一个 select 查询,输出看起来像

id    assignee_web         assignee_app          assignee_qa
29   dani,dipu,mark         dani, dipu            dani,mark
28     dani,himel           dani,mark,dipu         himel

我写了一个只显示 assignee_web 的查询。这是我的代码

SELECT c.id as id, GROUP_CONCAT(u.name SEPARATOR ', ') as assignee_web FROM config_project c, users u
        WHERE FIND_IN_SET(u.id, c.assignee_web)
        GROUP BY c.id ORDER BY c.id DESC

我只能通过此查询获取 assignee_web 数据,但无法获取 assignee_app 和 assignee_qa 的 return 数据。

您可以使用相关查询:

SELECT c.id as id,
       (SELECT GROUP_CONCAT(u.name SEPARATOR ', ') 
        FROM users u
        WHERE FIND_IN_SET(u.id, c.assignee_web)) as assignee_web,
       (SELECT GROUP_CONCAT(u.name SEPARATOR ', ') 
        FROM users u
        WHERE FIND_IN_SET(u.id, c.assignee_app)) as assignee_app,
       (SELECT GROUP_CONCAT(u.name SEPARATOR ', ') 
        FROM users u
        WHERE FIND_IN_SET(u.id, c.assignee_qa)) as assignee_qa                
FROM config_project c
ORDER BY c.id DESC

虽然您应该规范化您的数据。人就是永远学不会,每次遇到新的问题,都会一直遇到。