小编典典

将所有行列合并到联接表中的单个列中

sql

我想加入一个具有多行的表,并且需要将所有行中的一列合并为单列。

select a.parent_id,a.parent_name,concat(b.child_name) from parent a 
join children b on (a.parent_id=b.parent_id);

这应返回所有父行,并且每个父行应具有其所有子行。

我正在考虑与parent_id分组,但获得多个记录(每个孩子一个记录)。除了分组以在单行中获得父母的所有孩子的子女之外,我在这里可以实现什么逻辑。


阅读 134

收藏
2021-04-15

共1个答案

小编典典

SELECT a.parent_id, a.parent_name, STRING_AGG(b.child_name, ',') as Children
FROM
    Parent a
    INNER JOIN children b
    ON a.Id = b.ParentId
GROUP BY
    a.parent_id
    ,a.parent_name
2021-04-15