Bạn sẽ phải xác định, cách thức để nhóm các giá trị có cùng category_id
. Nối chúng? Tính tổng?
Để tạo danh sách giá trị được phân tách bằng dấu phẩy, câu lệnh của bạn có thể trông giống như sau:
SELECT category_id
,string_agg(col1, ', ') AS col1_list
,string_agg(col2, ', ') AS col2_list
FROM items
GROUP BY category_id
Bạn cần Postgres 9.0 trở lên cho string_agg(col1, ', ')
. Trong các phiên bản cũ hơn, bạn có thể thay thế bằng array_to_string(array_agg(col1), ', ')
. Các hàm tổng hợp khác tại đây
.
Để tổng hợp các giá trị trong PostgreSQL là cách tiếp cận rõ ràng ưu việt hơn so với tổng hợp các giá trị trong máy khách. Postgres là rất nhanh tại điều này và nó làm giảm lưu lượng (mạng).