Chúng ta có thể đặt hàm set-return unnest()
vào SELECT
danh sách như Raphaël đề xuất
. Điều này được sử dụng để thể hiện các vấn đề về trường hợp góc trước Postgres 10. Xem:
Vì Postgres 9.3, chúng tôi cũng có thể sử dụng LATERAL
tham gia vì điều này. Đó là cách rõ ràng hơn, tuân thủ tiêu chuẩn để đưa các hàm trả về thiết lập vào FROM
danh sách, không vào SELECT
danh sách:
SELECT name, value
FROM tbl, unnest(values) value; -- implicit CROSS JOIN LATERAL
Một sự khác biệt nhỏ:điều này làm giảm các hàng có giá trị values
từ kết quả do unnest()
trả về không có hàng , trong khi giá trị tương tự được chuyển đổi thành giá trị NULL trong FROM
danh sách và vẫn trả lại. Truy vấn tương đương 100% là:
SELECT t.name, v.value
FROM tbl t
LEFT JOIN unnest(t.values) v(value) ON true;
Xem: