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
。
我有三个表"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
。