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

THAM GIA (CHỌN ...) ue ON 1 =1?

Ý định là một vô điều kiện LEFT JOIN , là khác nhau từ CROSS JOIN trong đó tất cả các hàng từ biểu thức bảng bên trái được trả về, ngay cả khi không có khớp nào trong biểu thức bảng bên phải - trong khi CROSS JOIN loại bỏ các hàng như vậy khỏi kết quả. Thông tin thêm về cách tham gia trong sách hướng dẫn.

Tuy nhiên:

1=1 là vô nghĩa trong Postgres và tất cả các công cụ phái sinh bao gồm Amazon Redshift. Chỉ cần sử dụng true . Điều này có thể đã được chuyển từ một RDBMS khác không hỗ trợ boolean nhập đúng cách.

... LEFT JOIN (SELECT  ...) ue ON true

Sau đó, một lần nữa, LEFT JOIN là vô nghĩa đối với truy vấn con cụ thể này với SELECT MIN(modified) FROM user ở bên phải, vì SELECT với một hàm tổng hợp (min() ) và không có GROUP BY mệnh đề luôn trả về chính xác một hàng. Trường hợp này (nhưng không phải các trường hợp khác trong đó không có hàng có thể được tìm thấy) có thể được đơn giản hóa thành:

... CROSS JOIN (SELECT MIN(modified) AS first_modified FROM user) ue


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tự động đóng các kết nối không hoạt động trong PostgreSQL?

  2. Django:quyền bị từ chối khi cố gắng truy cập cơ sở dữ liệu sau khi khôi phục (di chuyển)

  3. Chia cột thành nhiều hàng trong Postgres

  4. Tại sao KHÔNG NULL sai khi kiểm tra một loại hàng?

  5. Nguyên nhân nào gây ra lỗi Thêm không được nhận dạng ... khi chạy Postgresql 11 trên máy Windows?