Heim >Datenbank >MySQL-Tutorial >LEFT JOINs in SQL Server: ON vs. WHERE-Klausel – Was ist der Unterschied und wann sollte ich sie verwenden?
LEFT JOIN mit Bedingung: Ein vs. WHERE
In SQL Server werden LEFT JOINs häufig verwendet, um beim Verknüpfen Daten aus einer Tabelle abzurufen über eine gemeinsame Spalte in eine andere Tabelle verschieben. Bei der Verwendung von Bedingungen in den ON- und WHERE-Klauseln entsteht jedoch ein subtiler Unterschied, der zu unterschiedlichen Ergebnissen führt.
JOIN ON-Klausel vs. WHERE-Klausel
Die ON-Klausel in Ein LEFT JOIN gibt die Bedingung an, die bestimmt, welche Zeilen aus der primären Tabelle (verknüpfte Tabelle) mit Zeilen aus der sekundären Tabelle (verknüpfte Tabelle) abgeglichen werden. Im Gegensatz dazu filtert die WHERE-Klausel die Ergebnismenge, nachdem die Verknüpfung durchgeführt wurde.
Beispiel
Betrachten Sie die folgenden zwei Abfragen:
-- LEFT JOIN with Condition in ON Clause SELECT t1.f2 FROM t1 LEFT JOIN t2 ON t1.f1 = t2.f1 AND cond2 AND t2.f3 > something; -- LEFT JOIN with Condition in WHERE Clause SELECT t1.f2 FROM t1 LEFT JOIN t2 ON t1.f1 = t2.f1 AND cond2 WHERE t2.f3 > something;
Ergebnisse
Überraschenderweise liefern diese beiden Abfragen nicht das Gleiche Ergebnisse. Der Grund liegt im Unterschied zwischen den Klauseln JOIN und WHERE.
In der ersten Abfrage schränkt die Bedingung in der Klausel ON ein, welche Zeilen von t2 mit t1 verbunden werden. Daher werden Zeilen aus t2, die die Bedingung (t2.f3 <= irgendetwas) nicht erfüllen, von der Verknüpfung ausgeschlossen. Folglich enthält die Ergebnismenge keine Zeilen aus t1, die potenziell mit den ausgeschlossenen Zeilen aus t2 übereinstimmen könnten.
In der zweiten Abfrage wird die Bedingung in der WHERE-Klausel nach dem Join angewendet durchgeführt wurde. Dadurch werden alle Zeilen von t1 mit allen Zeilen von t2 verbunden, unabhängig davon, ob sie die Bedingung erfüllen. Anschließend filtert die WHERE-Klausel die Zeilen heraus, die die Bedingung nicht erfüllen, und liefert im Vergleich zur ersten Abfrage eine andere Ergebnismenge.
Fazit
Den Unterschied zwischen verstehen Die ON- und WHERE-Klauseln sind bei der Arbeit mit LEFT JOINs von entscheidender Bedeutung. Die ON-Klausel bestimmt die übereinstimmenden Zeilen für den Join, während die WHERE-Klausel die Ergebnismenge filtert, nachdem der Join abgeschlossen wurde. Dieses Verständnis stellt sicher, dass die gewünschten Ergebnisse bei SQL-Abfragen mit LEFT JOINs erzielt werden.
Das obige ist der detaillierte Inhalt vonLEFT JOINs in SQL Server: ON vs. WHERE-Klausel – Was ist der Unterschied und wann sollte ich sie verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!