【发布时间】:2016-08-26 22:51:39
【问题描述】:
我想加入一个包含多行的表,并且需要将所有行中的一列合并为一列。
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 分组但获得多条记录(每个孩子一条记录)。除了分组以在单行中获取父母的所有孩子之外,我可以在这里实现什么逻辑。
【问题讨论】:
-
postgres 9.0 + string_agg() 和分组
-
如果我使用 child_name 进行分组,我会收到错误,因为 - 列“a.parent_name”必须出现在 GROUP BY 子句中或用于聚合函数中
-
如果我在 group by 子句中添加 parent_id、parent_name 和 child_name,我会为每个孩子获得一行。
-
child_name 不应出现在 group by 子句中。这是您要聚合的内容。请参阅下面的答案。
标签: sql database postgresql