2013-05-27 74 views
2

我有2个表格:手稿manuscript_log带INNER JOIN的MySQL concat

我想显示各稿件对应的日志在同一行

例如: 我有两个手稿1和2. 手稿1有2个日志,手稿2有3个日志。

我想获得在查询两个结果,由manuscrit ID分组:

manuscript_id  manuscript_log 
1.      1,2 
2.      3,4,5 

SELECT manuscript.id, manuscript_log.log_number 
FROM manuscript INNER JOIN manuscript_log 
       ON manuscript.id = manuscript_log.manuscript_id 
+0

见http://stackoverflow.com/ questions/276927/can-i-concatenate-multiple-mysql-rows-into-one-field for a more upvoted upvoted question/answer on the same issue。 –

回答

3

可以使用GROUP_CONCAT聚合函数

SELECT manuscript.id, GROUP_CONCAT(manuscript_log.log_number) 
FROM manuscript INNER JOIN manuscript_log 
       ON manuscript.id = manuscript_log.manuscript_id 
GROUP BY manuscript.id 
+0

完美,这就是我正在寻找的。谢谢。 –

+1

我建议修改使用'group_concat(通过manuscript_log.log_number分隔符',''不同的manuscript_log.log_number的顺序')' – gillyspy

+0

玩这个我发现你也可以在GROUP_CONCAT里面多个字段,像这样'GROUP_CONCAT(DISTINCT manuscript_log.log_number,'',manuscript_log.some_other_key_eg_email separator';')'唯一的事情是,独特的领域总是第一...希望有所帮助! ;) – MediaVince