Trong Postgres, chúng tôi có thể sử dụng STRING_AGG()
chức năng chuyển đổi kết quả truy vấn của chúng tôi thành một danh sách được phân tách bằng dấu phẩy.
Thay vì mỗi giá trị được xuất trong một hàng riêng biệt (như với bất kỳ truy vấn thông thường nào), các giá trị được xuất thành một hàng duy nhất, được phân tách bằng dấu phẩy (hoặc một số dấu phân cách khác mà chúng tôi chọn).
Ví dụ
Hãy tưởng tượng chúng ta chạy truy vấn sau:
SELECT *
FROM Genres;
Kết quả:
+---------+---------+ | genreid | genre | +---------+---------+ | 1 | Rock | | 2 | Jazz | | 3 | Country | | 4 | Pop | | 5 | Blues | | 6 | Hip Hop | | 7 | Rap | | 8 | Punk | +---------+---------+ (8 rows)
Chúng tôi có thể chạy truy vấn sau để xuất ra genre
cột dưới dạng danh sách được phân tách bằng dấu phẩy:
SELECT STRING_AGG(genre, ', ')
FROM Genres;
Kết quả:
+-----------------------------------------------------+ | string_agg | +-----------------------------------------------------+ | Rock, Jazz, Country, Pop, Blues, Hip Hop, Rap, Punk | +-----------------------------------------------------+ (1 row)
Chúng tôi thậm chí có thể bao gồm GenreId
trong danh sách của chúng tôi nếu chúng tôi muốn:
SELECT STRING_AGG(CONCAT(GenreId, ') ', Genre), ' ' ORDER BY GenreId ASC)
FROM Genres;
Kết quả:
1) Rock 2) Jazz 3) Country 4) Pop 5) Blues 6) Hip Hop 7) Rap 8) Punk
Ở đây, tôi cũng đã sử dụng ORDER BY
mệnh đề trong STRING_AGG()
để sắp xếp kết quả theo GenreId
theo thứ tự tăng dần.
Chúng tôi cũng có thể làm những việc như xóa các bản sao (với DISTINCT
mệnh đề), sử dụng một dấu phân tách khác và sử dụng hàm trong một truy vấn được nhóm.
Xem STRING_AGG()
Hàm trong PostgreSQL để làm ví dụ.