sql >> Databáze >  >> RDS >> Oracle

připojit podmínku ON vs in WHERE

To, co nazýváte "ekvivalentní", není ekvivalentem pro vnější spojení. Vezměme si například levé spojení.

Podmínka v 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 KDE:

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

Vložení podmínek do klauzule WHERE efektivně způsobí, že spojení budou INNER spojuje, protože klauzule WHERE je řádkový filtr který se použije po spojení byla provedena.



  1. Proč je ladění výkonu SQL nejdůležitější dovedností správy databází

  2. SQL ALTER TABLE pro začátečníky

  3. MySQL Vyberte z kategorie v tabulce y, kde Počet (produktu kategorie z jiné tabulky) je větší než nula

  4. PHP / PDO:SQl pro nalezení řádku, který obsahuje hodnotu řetězce