Heim > Datenbank > MySQL-Tutorial > Linkes äußeres Join -Puzzle: Warum mehr Ergebnisse als linke Tabellenaufzeichnungen?

Linkes äußeres Join -Puzzle: Warum mehr Ergebnisse als linke Tabellenaufzeichnungen?

DDD
Freigeben: 2025-01-25 01:26:09
Original
438 Leute haben es durchsucht

LEFT OUTER JOIN Puzzle: Why More Results Than Left Table Records?

LEFT OUTER JOIN Problem: Die Anzahl der Datensätze überschreitet die linke Tabelle?

Während allgemein angenommen wird, dass ein LEFT OUTER JOIN immer alle Datensätze aus der linken Tabelle zurückgibt, war ein Benutzer verwirrt, als die Abfrage mehr Ergebnisse als erwartet zurückgab.

Die betreffende SQL-Abfrage:

<code class="language-sql">SELECT     
    SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID
FROM
    SUSP.Susp_Visits 
LEFT OUTER JOIN
    DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum</code>
Nach dem Login kopieren

Entdecken Sie die Wahrheit:

Das Missverständnis ist die Annahme, dass ein LEFT OUTER JOIN nur NULL-Werte für nicht übereinstimmende Zeilen in der linken Tabelle zurückgibt. Tatsächlich werden alle übereinstimmenden Zeilen zurückgegeben, auch wenn mehrere Zeilen aus der rechten Tabelle mit einer Zeile aus der linken Tabelle übereinstimmen.

Beispiel:

Betrachten Sie das folgende Formular:

**Susp_Visits** **Dim_Member**
MemID: 1 MembershipNum: 1
MemID: 1 MembershipNum: 2
MemID: 2 MembershipNum: NULL

Ein LEFT OUTER JOIN basierend auf MemID führt zu folgenden Ergebnissen:

**SuspReason** **SiteID** **MembershipNum**
1 1 1
1 1 2
2 2 NULL

Wie Sie sehen können, wird die Zeile mit Susp_Visits.SuspReason von 1 dupliziert, da sie mit zwei Zeilen in Dim_Member übereinstimmt.

Alternative:

Wenn das gewünschte Ergebnis darin besteht, nur die eindeutige Zeile aus der linken Tabelle abzurufen, ist kein LEFT OUTER JOIN erforderlich. Führen Sie einfach eine einfache SELECT-Anweisung aus der Tabelle links aus:

<code class="language-sql">SELECT     
    SuspReason, SiteID
FROM
    SUSP.Susp_Visits</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonLinkes äußeres Join -Puzzle: Warum mehr Ergebnisse als linke Tabellenaufzeichnungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage