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
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:
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
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:
Hinweis:
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!