【问题标题】:string_agg: more than two attributes concatenationstring_agg:两个以上属性串联
【发布时间】:2014-12-01 18:07:22
【问题描述】:

我正在使用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|
  ----------------

有人可以帮忙吗?谢谢。

【问题讨论】:

  • “这就是我连接两个属性的方式”——在我看来,这就像连接一个字段的所有值,而不是两个字段。

标签: postgresql string-aggregation


【解决方案1】:

只需像这样连接字段:

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;

【讨论】:

    【解决方案2】:
    SELECT name || ': ' || string_agg(book, ',') FROM authors where id = 1 group by name ;
    

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 2018-05-25
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2013-04-13
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      相关资源
      最近更新 更多