Heim >Datenbank >MySQL-Tutorial >LEFT JOINs in SQL Server: ON vs. WHERE-Klausel – Was ist der Unterschied und wann sollte ich sie verwenden?

LEFT JOINs in SQL Server: ON vs. WHERE-Klausel – Was ist der Unterschied und wann sollte ich sie verwenden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-26 19:12:13918Durchsuche

LEFT JOINs in SQL Server: ON vs. WHERE Clause – What's the Difference and When Should I Use Each?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn