如何LEFT JOIN以逗号分隔的列表?

时间:2017-10-18 15:40:53

标签: mysql left-join

我想从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

1 个答案:

答案 0 :(得分:1)

您好请使用以下查询,您可以使用 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