连接mysql中的值,其中一个表中的多行与另一个表中的一行相关
我有两个mysql表,一个列出文章名称,另一个列出与每篇文章相关的作者,如下所示:连接mysql中的值,其中一个表中的多行与另一个表中的一行相关,mysql,grouping,concatenation,Mysql,Grouping,Concatenation,我有两个mysql表,一个列出文章名称,另一个列出与每篇文章相关的作者,如下所示: article_id title ======================= 1 art1 2 art2 3 blob article_id name surname ===================================== 1
article_id title
=======================
1 art1
2 art2
3 blob
article_id name surname
=====================================
1 jack smith
1 jill jones
1 rob edgar
2 billy bryce
3 dick bonsor
3 jeff kucick
我正在尝试创建一个将返回以下内容的查询:
article_id title author
=========================================================
1 art1 jack smith, jill jones, rob edgar
2 art2 billy bryce
3 blob dick bonsor, jeff kucick
我一直在查看group_concat和concat_ws,但我尝试返回上述结果时失败。如果你们有任何人对此有任何想法,我将不胜感激
非常感谢
select
a.article_id,
a.title,
group_concat(concat(p.name, ' ', p.surname)) as author
from
article a
inner join author p on p.article_id = a.article_id
group by
a.article_id,
a.title
或者,如果要使用concat_ws:
select
a.article_id,
a.title,
group_concat(concat_ws(' ', p.name, p.surname)) as author
from
article a
inner join author p on p.article_id = a.article_id
group by
a.article_id,
a.title
嗨,哇,反应很快!谢谢我不知道是谁否决了你。。。让我试试你的答案,看看会发生什么。。。非常感谢!太棒了,太谢谢你了!我知道会有办法做到这一点,但这稍微超出了我目前mysql的能力!嗯,您已经找到了正确的函数:很高兴我能帮上忙。我现在想起来还有一个问题。。。我将如何排序此查询中作者的顺序。例如,如果我希望它们按姓氏的字母顺序排列,或按作者表中未包含在当前查询中的另一列排序…例如,一个“位置”列?忽略这一点,我已经解决了。。。很简单。再次感谢。