使用join和group_concat的mysql请求

时间:2015-02-15 21:08:02

标签: mysql join group-concat

我有三张桌子"名称","组","任务"

"名称"

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

"组"

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

"任务"

| 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中使用它时,它运行良好。简短的解释我做错了什么,会很好。

1 个答案:

答案 0 :(得分:2)

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

在查询结尾处添加group by t.id