postgreSQL中如何實現group_concat

相似Mysql group_concat 的效果。sql

9.0以後的版本

group by 後如何冗餘子表的字段。 好比A、B兩個表。B是A的子表,B中有A的主鍵。查詢A的時候,把B的某個字段顯示出來,用逗號隔開。數組

SELECT a.id, string_agg(b.name, ',') FROM A a, B b GROUP BY a.id

使用string_agg函數便可。網絡

9.0以前的版本(此例子爲網絡收集,未驗證)

  1. 自定義彙集函數
CREATE AGGREGATE group_concat(anyelement)
(
sfunc = array_append, -- 每行的操做函數,將本行append到數組裏
stype = anyarray, -- 彙集後返回數組類型
initcond = '{}' -- 初始化空數組
);
SELECT id, array_to_string(group_concat(name),',') from A group by id;
  1. array_agg
select array_to_string(ARRAY(SELECT unnest(array_agg(name))),',') from A;
相關文章
相關標籤/搜索