![Left, Right, or Inner Join: Which SQL Join Should I Use?](https://img.php.cn/upload/article/000/000/000/173598028385495.jpg)
Entscheidung zwischen linken, rechten und inneren Verknüpfungen: Ein praktischer Leitfaden
Bei der Arbeit mit relationalen Datenbanken sind Verknüpfungen ein wesentliches Werkzeug zum Kombinieren von Daten aus mehreren Tabellen. Allerdings kann die Auswahl des richtigen Join-Typs schwierig sein, insbesondere wenn mit Nullable-Werten gearbeitet wird. Dieser Artikel bietet eine praktische Anleitung, die Ihnen bei der Entscheidung hilft, wann Sie Links-, Rechts- oder Innenverknüpfungen verwenden sollten, mit besonderem Schwerpunkt auf der Lösung des häufig auftretenden Problems bei der Entscheidung, welche Tabelle auf welcher Seite der Verknüpfung platziert werden soll.
Join-Typen
-
Inner Join: Gibt nur Zeilen zurück, die in beiden übereinstimmen Tabellen.
-
Left Join: Gibt alle Zeilen aus der linken Tabelle zurück, unabhängig davon, ob es eine Übereinstimmung in der rechten Tabelle gibt. In den rechten Tabellenspalten werden für nicht übereinstimmende Zeilen Nullwerte angezeigt.
-
Rechter Join: Gibt alle Zeilen aus der rechten Tabelle zurück, unabhängig davon, ob in der linken Tabelle eine Übereinstimmung vorliegt.
Auswahl des richtigen Joins
Um zu bestimmen, welcher Join-Typ verwendet werden soll, beachten Sie Folgendes Faktoren:
Beispiel
Die bereitgestellte Abfrage ist eine Herausforderung, da sowohl „folderDetails“ als auch „imageDetails“ Nullwerte für die Join-Spalten haben können.
-
Left Join: Dadurch werden alle Zeilen von „batchDetails“ zurückgegeben, unabhängig davon, ob diese vorhanden sind übereinstimmende Zeilen in „folderDetails“ und „imageDetails“.
-
Right Join: Dies gibt alle Zeilen aus „folderDetails“ und „imageDetails“ zurück, unabhängig davon, ob es übereinstimmende Zeilen in „batchDetails“ gibt.
-
Inner Join: Dadurch werden nur Zeilen zurückgegeben, die in allen drei Tabellen übereinstimmen, möglicherweise werden Zeilen mit Null ausgeschlossen Werte.
Empfehlung
In diesem Fall ist eine Linksverknüpfung besser geeignet, weil:
- Sie möchten alle erhalten Zeilen aus BatchDetails, unabhängig davon, ob es übereinstimmende Zeilen in den anderen Tabellen gibt.
- Die Join-Bedingung umfasst nullfähige Spalten, also eine innere Join könnte gültige Zeilen ausschließen.
Zusätzliche Tipps
- Wenn der Primärschlüssel einer Tabelle wahrscheinlich übereinstimmende Werte in der anderen Tabelle hat, sollten Sie erwägen, diese Tabelle auf der linken Seite des Joins zu platzieren.
- Verwenden Sie Klammern, um die Reihenfolge der Joins zu steuern und vermeiden Sie Mehrdeutigkeiten.
- Eine hilfreiche Grafik finden Sie in der visuellen Darstellung von SQL-Joins, die im verwiesenen Artikel verlinkt ist Darstellung.
- Erwägen Sie die Verwendung von NOT IN anstelle eines Left-Joins, wenn die Leistung ein Problem darstellt, insbesondere bei großen Datensätzen.
Das obige ist der detaillierte Inhalt vonLinker, rechter oder innerer Join: Welchen SQL-Join sollte ich 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