在mysql中使用GROUP_CONCAT选择查询

时间:2017-01-04 13:00:26

标签: mysql select group-concat

我有两张桌子。

用户

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_web assignee_app assignee_qa 都是用户 id 的参考ID 表。现在我想要一个选择查询,其输出看起来像

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的数据。

1 个答案:

答案 0 :(得分:3)

您可以使用相关查询:

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

虽然您应该规范化您的数据。人们永远不会学习,每次你遇到一些新问题,你都会继续学习。