Heim > Datenbank > MySQL-Tutorial > Wie kann ich doppelte Zeilen beim Verknüpfen mehrerer Tabellen in SQL-SELECT-Anweisungen vermeiden?

Wie kann ich doppelte Zeilen beim Verknüpfen mehrerer Tabellen in SQL-SELECT-Anweisungen vermeiden?

DDD
Freigeben: 2024-12-05 21:19:14
Original
896 Leute haben es durchsucht

How Can I Avoid Duplicate Rows When Joining Multiple Tables in SQL SELECT Statements?

Vermeiden doppelter Ergebnisse in SELECT-Anweisungen mit mehreren Tabellen: Ein umfassender Leitfaden

Beim Ausführen von SELECT-Anweisungen, die Daten aus mehreren Tabellen zusammenführen, kann es, wie im Beispiel dargestellt, zu doppelten Zeilen kommen im bereitgestellten Szenario:

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

Diese Abfrage ruft 5 Zeilen für Getränke ab, mit Foto als das einzige eindeutige Feld. Allerdings werden Name und Preis wiederholt, was zu doppelten Zeilen für Getränke wie „Fanta“ führt.

Die Lösung: Gruppierungs- und Aggregationsfunktionen

Um diese Duplikate zu beseitigen, müssen Sie Gruppierung und Aggregation verwenden Funktionen. Durch die Gruppierung können Sie Zeilen basierend auf gemeinsamen Werten kombinieren, während Sie mit Aggregatfunktionen einen bestimmten Wert für jede Gruppe extrahieren können.

Gruppierung nach Getränken

Wenn Sie eine einzelne Zeile für jedes Getränk wünschen, Unabhängig von der Anzahl der damit verbundenen Fotos können Sie nach der Getränke-ID gruppieren:

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

Diese Abfrage wird return:

name price photo
fanta 5 ./images/fanta-1.jpg
dew 4 ./images/dew-1.jpg

Fotos mit GROUP_CONCAT verketten

Wenn Sie lieber eine Reihe von Fotos für jedes Getränk haben möchten, bietet MySQL die Funktion GROUP_CONCAT, die Werte aus derselben Gruppe verkettet:

SELECT name, price, GROUP_CONCAT(photo, ',')
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id
Nach dem Login kopieren

Diese Abfrage wird yield:

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

Überlegungen

Beachten Sie, dass GROUP_CONCAT mit Vorsicht verwendet werden sollte, da es zu Problemen mit der Datenbankleistung führen oder übermäßig große Zeichenfolgen zurückgeben kann, wenn die verketteten Werte Kommas enthalten.

Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Zeilen beim Verknüpfen mehrerer Tabellen in SQL-SELECT-Anweisungen vermeiden?. 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