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

tham gia điều kiện ON so với WHERE

Vâng, những gì bạn gọi là "tương đương" không phải là một tương đương cho các phép nối bên ngoài. Hãy lấy ví dụ về phép nối bên trái.

Điều kiện tham gia:

SELECT * FROM Customers c
LEFT JOIN CustomerAccounts ca ON ca.CustomerID = c.CustomerID AND c.State = 'NY'
LEFT JOIN Accounts a ON ca.AccountID = a.AccountID AND a.Status = 1

so với WHERE:

SELECT * FROM Customers c
LEFT JOIN CustomerAccounts ca ON ca.CustomerID = c.CustomerID
LEFT JOIN Accounts a ON ca.AccountID = a.AccountID
WHERE c.State = 'NY'
AND a.Status = 1

Đặt các điều kiện vào mệnh đề WHERE làm cho các phép nối INNER tham gia, vì mệnh đề WHERE là một hàng bộ lọc được áp dụng sau các phép nối đã được thực hiện.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Áp dụng hàm COUNT trên một nhóm con của các nhóm

  2. ORACLE - tìm kết quả cụ thể bên trong LOOP (HOẶC TƯƠNG TỰ)

  3. apt-get cài đặt oracle java 7 ngừng hoạt động

  4. làm ơn lấy bảng trong trình kích hoạt 'trước thay đổi'

  5. Làm thế nào để thay thế các giá trị null bằng một văn bản?