mysql - 如何 LEFT JOIN 逗号分隔列表?

标签 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

最佳答案

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

关于mysql - 如何 LEFT JOIN 逗号分隔列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46814131/

相关文章:

php - 在新的聊天消息上弹出聊天框

mysql - 选择行 <= 值

mysql - SQL 一对多关系 - 如何根据多个对多属性来选择行?

c# - 如何编写 LINQ 左连接

mysql - 我如何按类型过滤?另一个左连接正确吗?

mysql - 如何重写jpql自定义查询中给定的查询?

php - 存储过程中的准备语句不起作用

php - 基于用户、角色和方法呈现菜单

SQL 在三个表中的任何一个中查找匹配的记录

PostgreSQL 同表左外连接多表