sql >> Database teknologi >  >> RDS >> Oracle

join-betingelse ON vs in WHERE

Nå, hvad du kalder "ækvivalent" er ikke en ækvivalent for ydre sammenføjninger. Lad os f.eks. tage den venstre join.

Tilstand 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

vs HVOR:

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

Ved at sætte betingelserne ind i WHERE-klausulen bliver joins effektivt INNER joins, fordi WHERE-sætningen er et række filter der anvendes efter sammenføjningerne er lavet.



  1. oracle -- Opdel flere kommaseparerede værdier i oracle-tabellen til flere rækker

  2. Hvorfor er min stablede arealgraf i ggplot2 tom

  3. Hvordan opdaterer jeg, hvis den findes, indsæt hvis ikke (AKA upsert or merge) i MySQL?

  4. Sådan migreres fra Oracle til MySQL / Percona Server