Kể từ PostgreSQL 9.0 (phát hành tháng 9 năm 2010), có chức năng tổng hợp string_agg()
để làm những gì bạn dường như muốn:
SELECT string_agg(field1, ';') FROM tbl GROUP BY id;
Lưu ý, rằng tham số thứ hai là tách (tương tự như các hàm tổng hợp khác).
Ngoài ra còn có các chuỗi chức năng concat_ws()
từ PostgreSQL 9.1, điều đó bằng cách khác làm tương tự như MySQL của concat_ws()
(khi không bị lạm dụng như chức năng tổng hợp). Nó đặc biệt hữu ích để đối phó với các giá trị NULL
.
SELECT concat_ws(';', field1, field2, field3) FROM tbl
Bạn thậm chí có thể kết hợp cả hai để tăng đột biến nhiều cột theo bất kỳ cách nào bạn muốn.
SELECT id, string_agg(concat_ws(',', field1, field2, field3), ';') AS fields
FROM tbl
GROUP BY id;
Nguồn
2013-04-12 19:10:34
FYI, concat_ws sẽ được trong PostgreSQL 9.1 : http://developer.postgresql.org/pgdocs/postgres/functions-string.html –
.. nhưng trong Postgres 'concat_ws()' là * không * một hàm tổng hợp. Sử dụng 'string_agg()' để thay thế. Xem bên dưới. –