2014-10-07 80 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 ;