Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Join-Bedingung ON vs in WHERE

Nun, was Sie "Äquivalent" nennen, ist kein Äquivalent für äußere Verknüpfungen. Nehmen wir zum Beispiel den linken Join.

Bedingung in JOIN:

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

vs WO:

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

Durch das Einfügen der Bedingungen in die WHERE-Klausel werden die Joins effektiv zu INNER Joins, da die WHERE-Klausel ein Zeilen-Filter ist die nach angewendet wird die Verknüpfungen wurden vorgenommen.