我有两张桌子。
用户
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的数据。
答案 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
虽然您应该规范化您的数据。人们永远不会学习,每次你遇到一些新问题,你都会继续学习。