SQL:将子表中的记录连接到单个记录中

时间:2017-06-25 18:03:22

标签: mysql sql

有2个表与1:M关系。 连接输出应有2列: 第1列 - 来自父表和 第二列我是子表中所有相关记录的串联。 输出中的记录总数应为父表中的记录数。 数据库:MySQL。

示例:

父(id PK,parent_name)

Child(id PK,parent_id FK,child_name)

Parent:
| id | parent_name
——————------------
| 1  | Smith
| 2  | David

Child :
id | parent_id | child_name
———————————————---------------
1  | 1         | Anna
2  | 1         | Linda
3  | 2         | Maria
4  | 2         | Michael

Expected join result: 

parent_name | child_name
——————------|———————
Smith       | Anna, Linda
David       | Maria, Michael

2 个答案:

答案 0 :(得分:2)

你需要group_concat。试试这个 -

SELECT P.parent_name, GROUP_CONCAT(C.child_name)
FROM Parent P INNER JOIN Child C
ON P.id = C.parent_id
GROUP BY P.parent_name

希望这有帮助。

答案 1 :(得分:0)

Select pr.parent_name,group_concat(ch.child_name) 
from parent pr join child ch 
where pr.id = ch.parent_id 
group by pr.parent_name;

组连接是MySQL中的功能。你可以使用它。

试一试:)