如何加入逗号分隔列表?
问题描述:
我希望得到一个逗号从MySQL表分隔的列表,但匹配另一个表的用户名:如何加入逗号分隔列表?
任务:
--------------
id people_id
--------------
1 1,2
2 3,4
成员:
--------------
id username
--------------
1 James
2 Alan
3 Frank
4 John
这里是我的尝试:
$result = $db->query('
SELECT *,
group_concat(members.username)
FROM tasks
LEFT JOIN members
ON find_in_set(members.id, tasks.people_id)
')->fetchAll(PDO::FETCH_ASSOC);
我得到的结果是:
James
但我相信:
James, Alan
Frank, John
答
嗨,请使用以下查询,您可以使用FIND_IN_SET为逗号分隔值进行检查。
select t.id, group_concat(m.username)
from tasks t
join members m on find_in_set(m.id, t.peopleid)
group by t.id
+0
我的结果现在是'詹姆斯'弗兰克'但不是'詹姆斯,阿兰''弗兰克,约翰' – Jarla
+0
@Jarla您能否发送您的数据库表的转储。这样我就可以测试并给你正确的查询 –
修复您的数据模型 - 正确!除了目前的问题之外,你很可能会遇到更多的问题,这些问题是基于这种糟糕的设计选择,稍后在单个列中存储逗号值逗号。 – CBroe
@CBroe好吧,是否喜欢你伤心并更新我的问题 – Jarla
@ chris85好吧,更新了我的问题 – Jarla