mysql 使用加入请求和 group_concat

mysql request using join and group_concat

我有三个表"names"、"groups"、"tasks"

"names"

| nid | name  |
|  1  | John  |
|  2  | Jim   |
|  3  | Jerry |

"groups"

| gid | nid |
|  1  |  1  |
|  1  |  2  |
|  2  |  2  |
|  2  |  3  |

"tasks"

| tid | gid |
|  1  |  2  |
|  2  |  1  |

我想获取属于任务的姓名列表,如下所示:

| tid | names     |
|  1  | Jim,Jerry |
|  2  | John,Jim  |

我尝试成功了:

SELECT t.tid,n.name
FROM tasks t
   LEFT JOIN groups g ON g.gid=t.gid
   LEFT JOIN names n ON n.nid=g.nid

到目前为止这有效,但名称在单个输出中所以我尝试使用 GROUP_CONCAT(),但这不起作用。我刚接到第一个任务,名字错了!?!?

SELECT t.tid,GROUP_CONCAT(n.name)
FROM tasks t
   LEFT JOIN groups g ON g.gid=t.gid
   LEFT JOIN names n ON n.nid=g.nid

我以前从未使用过GROUP_CONCAT()。在没有连接的单个 SELECT 中使用它时效果很好。简短解释一下我做错了什么就好了。

使用 group_concat 时,您需要对结果进行分组。

在您的查询末尾添加 group by t.id