2014-10-07 28 views
0

我正在使用postgresql 9.0 我在想,是否可以将三个属性连接在一起。string_agg:超过两个属性连接

我这是怎么连接两个属性(书&逗号):

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| 
    ---------------- 

能有人帮助?谢谢。

+0

“我这是怎么连接两个属性” - 这在我看来就像一个串联领域,而不是两个领域的所有值。 – IMSoP 2014-10-07 10:32:32

回答

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
SELECT name || ': ' || string_agg(book, ',') FROM authors where id = 1 group by name ;