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

Lọc các THAM GIA:Ở ĐÂU so với BẬT

liên kết @Gratzy đã cung cấp hữu ích

Sự phân biệt giữa các điều kiện trong mệnh đề ON và mệnh đề WHERE chắc chắn là một màu xám.

Đối với INNER JOINS, chúng tương đương nhau. Đối với OUTER JOINS, bạn hiểu đúng rằng mệnh đề WHERE được áp dụng về mặt khái niệm sau khi điều kiện BẬT đã được đánh giá.

Nhưng trong nhiều trường hợp, sự khác biệt phụ thuộc vào mục đích hơn là chức năng. Thường có sự khác biệt về ngữ nghĩa giữa điều kiện ON và mệnh đề WHERE.

Ví dụ:các phiên bản cũ hơn của SQL Server thực sự đã triển khai cú pháp ON bằng cách sử dụng các điều kiện trong mệnh đề WHERE, sử dụng *= hoặc =* cú pháp để ngụ ý các phép nối LEFT hoặc RIGHT (dẫn đến các kết quả khác nhau một cách kỳ lạ tạo thành các phép tương đương LEFT và RIGHT JOIN trong một số trường hợp)

Nói chung, lời khuyên của tôi là luôn sử dụng các trường khóa thích hợp trong mệnh đề ON để nối các bản ghi dựa trên logic về cách các bản ghi liên kết với nhau. Sử dụng mệnh đề WHERE để áp dụng các điều kiện lọc hạn chế dần tập hợp kết quả này.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hiển thị ngày ở định dạng Anh trong SQL Server (T-SQL)

  2. Nhận thông tin dạng xem với dạng xem lược đồ thông tin VIEWS trong SQL Server

  3. Cột được tính toán trong Mã EF Đầu tiên

  4. Cách chuyển đổi chuỗi thành ngày / giờ trong SQL Server bằng cách sử dụng PARSE ()

  5. Làm thế nào để làm cho các ràng buộc khóa ngoại đáng tin cậy?