sql >> Databasteknik >  >> RDS >> Oracle

gå med villkor ON vs in WHERE

Tja, det du kallar "ekvivalent" är inte en motsvarighet för yttre sammanfogningar. Låt oss ta den vänstra gå till exempel.

Skick i 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

kontra VAR:

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

Genom att sätta villkoren i WHERE-satsen blir anslutningarna effektivt INNER går med, eftersom WHERE-satsen är ett rad filter som tillämpas efter sammanfogningarna har gjorts.



  1. Kommaseparerade värden

  2. CodeIgniter 'MySQL has Gone Away'

  3. Sök i mysql-tabellen från sista raden

  4. SQL Server LIKE som innehåller hakparenteser