Heim > Datenbank > MySQL-Tutorial > Warum gibt mein linker äußerer Join mehr Zeilen zurück als in der linken Tabelle?

Warum gibt mein linker äußerer Join mehr Zeilen zurück als in der linken Tabelle?

Mary-Kate Olsen
Freigeben: 2025-01-25 01:22:09
Original
983 Leute haben es durchsucht

Why Does My LEFT OUTER JOIN Return More Rows Than Exist in the Left Table?

Linkes Außenjoin Unerwartetes Verhalten: Mehr Zeilen als die linke Tabelle

Ein häufiges Missverständnis der linken Außenverbindungen ist, dass das Ergebnissatz immer die gleichen oder weniger Zeilen als die linke Tabelle hat. Dies ist jedoch nicht immer wahr. Die Anzahl der Zeilen kann die Zeilenzahl der linken Tabelle unter bestimmten Bedingungen überschreiten.

Dieses Problem wurde in einer Abfrage unter Verwendung eines linken äußeren Join zwischen "susp.SUSP_VISITS" (linke Tabelle) und "Data.dim_Member" (rechte Tabelle) beobachtet. Das zusammengefügte Ergebnis hatte mehr Zeilen als die 4935 Zeilen in "susp.susp_vissits".

Verständnis der linken äußeren Verstöße

Eine linke äußere Join funktioniert wie folgt:

  • enthält alle Zeilen aus der linken Tabelle.
  • Für jede linke Tabellenzeile sucht es nach übereinstimmenden Zeilen in der rechten Tabelle basierend auf der Join -Bedingung.
  • Wenn eine Übereinstimmung gefunden wird, ist die entsprechende rechte Tabellenzeile enthalten.
  • Wenn keine Übereinstimmung gefunden wird, werden Nullwerte für die Spalten der rechten Tabelle zurückgegeben.

Warum zusätzliche Zeilen aussehen

Die zusätzlichen Zeilen werden nicht durch Duplizieren der linken Tabellenreihen erstellt, sondern durch die Struktur der rechten Tabelle. Das Problem tritt auf, wenn multiple Zeilen in der rechten Tabelle ("data.dim_member") mit einer einzelnen Zeile in der linken Tabelle übereinstimmen ("susp.SUSP_VISITS").

Wenn beispielsweise ein "Memid" in "susp.SUSP_VISITS" multiple "Mitgliedschaftswerte" -Werte in "Data.dim_Member" entspricht Graf.

Lösungen

Um diese Zeile -Inflation in einem linken äußeren Join zu vermeiden:

  • Auswahl einschränken: Wählen Sie nur Spalten aus der linken Tabelle aus. Dies garantiert, dass die Anzahl der Ausgabestellen die Zeilenzahl der linken Tabelle nicht überschreitet.
  • Verwenden Sie den inneren Join: Wenn Sie nur Zeilen benötigen, bei denen ein Übereinstimmung zwischen beiden Tabellen besteht, ist ein innerer Join angemessener. Dadurch werden die zusätzlichen Zeilen beseitigt, die durch mehrere Übereinstimmungen auf der rechten Seite verursacht werden.

Das obige ist der detaillierte Inhalt vonWarum gibt mein linker äußerer Join mehr Zeilen zurück als in der linken Tabelle?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage