string_agg:两个以上的属性串联

时间:2014-10-07 10:26:14

标签: postgresql string-aggregation

我正在使用postgresql 9.0 我很想知道是否有可能将三个属性连接在一起。

这就是我连接两个属性(书和逗号)的方式:

SELECT string_agg(book, ',') FROM authors where id = 1;


| book1,book2,book3|
--------------------

我该如何做以下事情:

SELECT string_agg(name, ':', book, ',') FROM authors where id = 1;

| Ahmad: book1,book2,book3|
  ----------------

有人可以帮忙吗?感谢。

2 个答案:

答案 0 :(得分:4)

只需连接这样的字段:

SELECT name || ':' || string_agg(book, ',') FROM authors where id = 1;

修改

如果您的SQL返回多个名称,您需要按名称分组(如果您有多个具有相同名称的作者,则会更复杂。我不会在此答案中介绍该情况):

SELECT name || ':' || string_agg(book, ',') 
  FROM authors where id = 1 
 GROUP BY name;

如果您想按字母顺序排列图书,可以为图书添加ORDER BY

SELECT name || ':' || string_agg(book, ',') WITHIN GROUP ORDER BY book 
  FROM authors where id = 1 
 GROUP BY name;

答案 1 :(得分:1)

SELECT name || ': ' || string_agg(book, ',') FROM authors where id = 1 group by name ;