Heim > Datenbank > MySQL-Tutorial > Wie wähle ich eindeutige Getränkedaten aus mehreren MySQL-Tabellen mit doppelten Fotos aus?

Wie wähle ich eindeutige Getränkedaten aus mehreren MySQL-Tabellen mit doppelten Fotos aus?

Patricia Arquette
Freigeben: 2024-12-17 12:47:24
Original
275 Leute haben es durchsucht

How to Select Unique Drink Data from Multiple MySQL Tables with Duplicate Photos?

Eindeutige Ergebnisse aus mehreren Tabellen in MySQL auswählen

In MySQL kann es beim Durchführen einer JOIN-Operation zwischen mehreren Tabellen zu doppelten Zeilen kommen im Ergebnissatz. Dies tritt häufig auf, wenn Daten aus einer Tabelle mit mehreren Zeilen ausgewählt werden, die sich auf einen einzelnen Eintrag in einer anderen Tabelle beziehen.

Problemstellung

Betrachten Sie das folgende Beispiel:

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

Diese Abfrage versucht, den Namen, den Preis und das Foto für jedes Getränk aus den Tabellen „drinks“ und „drinks_photos“ abzurufen. Es entstehen jedoch doppelte Zeilen für jedes Getränk, da mit einem einzelnen Getränk mehrere Fotos verknüpft sein können.

Lösung

Um Duplikate zu eliminieren und sicherzustellen, dass jedes Getränk nur angezeigt wird Einmal müssen wir einen Gruppierungsmechanismus integrieren. MySQL bietet mehrere Möglichkeiten, dies zu erreichen:

Verwendung von Gruppierung und Aggregation

Eine Möglichkeit besteht darin, die GROUP BY-Klausel zu verwenden, um die Ergebnisse basierend auf den eindeutigen Getränken zu gruppieren und anzuwenden eine Aggregatfunktion zur Auswahl der gewünschten Spaltenwerte:

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

In dieser Abfrage fungiert Drinks_id als Gruppierungsspalte und stellt sicher, dass nur bestimmte Getränke enthalten sind die Ergebnisse. Da es für jedes Getränk mehrere Fotos gibt, müssen wir außerdem angeben, welches Foto angezeigt werden soll. In diesem Beispiel wird Foto verwendet, es könnte jedoch durch MIN(Foto) oder MAX(Foto) ersetzt werden, um das erste oder letzte Foto in aufsteigender bzw. absteigender Reihenfolge abzurufen.

Verwenden von GROUP_CONCAT

Alternativ stellt MySQL die Funktion GROUP_CONCAT zur Verfügung, mit der mehrere Werte zu einem einzigen verkettet werden können string:

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 ruft den Namen, den Preis und eine durch Kommas getrennte Liste aller mit jedem Getränk verknüpften Fotos ab.

Hinweis:

Es ist wichtig zu beachten, dass die Verwendung von GROUP_CONCAT zu Leistungseinbußen führen kann, wenn die verketteten Werte groß sind. Seien Sie außerdem vorsichtig bei Trennzeichen, die möglicherweise in den Werten selbst vorhanden sind.

Das obige ist der detaillierte Inhalt vonWie wähle ich eindeutige Getränkedaten aus mehreren MySQL-Tabellen mit doppelten Fotos aus?. 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