PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm phẳng một mối quan hệ với một mảng để tạo ra một hàng cho mỗi mục nhập mảng

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:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. django.db.utils.OperationalError:không thể kết nối với máy chủ:Không có tệp hoặc thư mục như vậy

  2. Hàm làm tham số cho một hàm khác trong Postgres

  3. Cách chính xác để sử dụng khác biệt trên (Postgres) với SqlAlchemy là gì?

  4. Postgres SQL để truy vấn văn bản mảng [] trong phần tử cụ thể

  5. Đặt một tùy chọn tùy chỉnh trong một quy trình được lưu trữ