如何在Postgresql查询中将数据列表作为字符串获取?

时间:2015-03-25 11:06:25

标签: postgresql

我的桌子是

create table parents(
id integer,
name text,
parent_childs text);

create table childs(
parent_id integer,
name text);

数据:

insert into parents values (1, 'Mueller');

insert into childs values (1, 'Peter');

insert into childs values (1, 'Hans');

如何以格式选择此数据:

parent_name    childs
------------------------
Mueller        Peter, Hans
Bayer          Anna, Petra, Max

我正在寻找一个简单的更新来编写来自父亲的一个父母条目中的孩子的所有名字。像父亲一样,像Peter,Hans一样。

1 个答案:

答案 0 :(得分:2)

更新:

string_agg(expression, delimiter) - 输入值连接成一个字符串,用分隔符分隔

在你的情况下: -

  • 表达: - childs.name
  • 分隔符: - ,

update parents 
set parent_childs =t.cname 
    from(
         select parent_id
               ,string_agg(childs.name,',') cname 
         from childs group by parent_id
        )t
where t.parent_id=parents.id

  

如何以格式选择此数据:

parent_name    childs
------------------------
Mueller        Peter, Hans
Bayer          Anna, Petra, Max

试试这个:

select parents.name as parent_name
      ,string_agg(childs.name,',') childs 
from childs 
inner join  parents on childs.parent_id=parents.id 
group by parent_id,parents.name