Heim > Datenbank > MySQL-Tutorial > Wie eliminiere ich doppelte Zeilen bei der Auswahl aus mehreren Tabellen in MySQL?

Wie eliminiere ich doppelte Zeilen bei der Auswahl aus mehreren Tabellen in MySQL?

DDD
Freigeben: 2024-12-18 03:38:09
Original
445 Leute haben es durchsucht

How to Eliminate Duplicate Rows When Selecting from Multiple Tables in MySQL?

SELECT aus mehreren Tabellen und Umgang mit Duplikaten in MySQL

Bei der Auswahl aus mehreren Tabellen kommt es aufgrund übereinstimmender Werte in der Verknüpfungsspalte häufig zu doppelten Zeilen. In diesem Szenario müssen Sie diese Duplikate möglicherweise entfernen und gleichzeitig bestimmte Informationen beibehalten.

Problemstellung:

Die folgende Abfrage ruft Informationen aus „drinks“ und „drinks_photos“ ab " Tabellen:

SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
Nach dem Login kopieren

Für jedes Getränk werden jedoch mehrere Fotoeinträge angezeigt, was zu doppelten Zeilen führt. Das Ziel besteht darin, diese Duplikate zu beseitigen und eindeutige Zeilen zu erhalten, die den Namen, den Preis und alle mit jedem Getränk verknüpften Fotos enthalten.

Lösung:

Um dieses Problem zu beheben und Um die Datenintegrität zu wahren, können wir Gruppierungs- und Aggregationsfunktionen in unserer Abfrage verwenden.

Gruppierung und Aggregation Funktionen:

  • GROUP BY: Gruppiert Zeilen, die in den angegebenen Spalten den gleichen Wert haben.
  • Aggregatfunktion: Eine Operation (z. B. COUNT, MAX, MIN), die für eine Gruppe von Zeilen ausgeführt wird, um eine einzelne abzurufen Wert.

In diesem Fall können wir nach der Spalte „drinks_id“ gruppieren, um eindeutige Zeilen für jedes Getränk zu erhalten.

SQL-Abfrage:

Um für jedes Getränk eine einzelne Zeile zu erhalten und alle Fotoeinträge beizubehalten, können wir Folgendes verwenden query:

SELECT name, price, GROUP_CONCAT(photo SEPARATOR ',') AS all_photos
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id
Nach dem Login kopieren
  • GROUP_CONCAT: Verkettet Werte aus der angegebenen Spalte in einer einzelnen Zeichenfolge, getrennt durch ein angegebenes Trennzeichen (in diesem Fall ein Komma).

Ergebnis:

Diese Abfrage gibt Folgendes zurück Ergebnis:

name price all_photos
fanta 5 ./images/fanta-1.jpg,./images/fanta-2.jpg,./images/fanta-3.jpg
dew 4 ./images/dew-1.jpg,./images/dew-2.jpg

Erklärung:

  • Jedes Getränk hat jetzt nur noch eine Zeile.
  • Die Spalte „all_photos“ enthält ein Komma -Getrennte Liste aller mit dem verknüpften Fotoeinträge trinken.

Hinweis:

  • GROUP_CONCAT ist keine standardisierte SQL-Aggregatfunktion und ihr Verhalten kann je nach Datenbanksystem variieren.
  • Wenn Sie auf Situationen stoßen, in denen Kommas in Fotodateinamen vorkommen, müssen Sie möglicherweise alternative Ansätze in Betracht ziehen, z. B. die Änderung der Tabellenstruktur oder die Verwendung einer benutzerdefinierten Funktion auf der Clientseite um die verkettete Zeichenfolge zu teilen.

Das obige ist der detaillierte Inhalt vonWie eliminiere ich doppelte Zeilen bei der Auswahl aus mehreren Tabellen in MySQL?. 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