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_web,assignee_app和assignee_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
虽然您应该规范化您的数据。人就是永远学不会,每次遇到新的问题,都会一直遇到。
我有两个 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_web,assignee_app和assignee_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
虽然您应该规范化您的数据。人就是永远学不会,每次遇到新的问题,都会一直遇到。