我有三个表“名称”,“组”,“任务”
“名字”
| 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
没有连接的情况下单个使用它时,它可以很好地工作。一个简短的解释,我做错了,会很好。
使用时,group_concat
您需要对结果进行分组。
group by t.id
在查询末尾添加。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句