Heim  >  Artikel  >  Datenbank  >  Wie kombiniere ich mehrere Zeilen in einer einzigen durch Kommas getrennten Zeile in MySQL?

Wie kombiniere ich mehrere Zeilen in einer einzigen durch Kommas getrennten Zeile in MySQL?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-08 12:21:02745Durchsuche

How to Combine Multiple Rows into a Single Comma-Separated Row in MySQL?

MySQL: Mehrere Zeilen in eine einzelne durch Kommas getrennte Zeile konvertieren

Innerhalb einer MySQL-Datenbank kann es vorkommen, dass Sie dies möchten Fasst mehrere Zeilen zu einer einzigen Zeile zusammen, wobei bestimmte Spalten als durch Kommas getrennte Werte dargestellt werden. Dies kann durch die Verwendung der Funktion GROUP_CONCAT erreicht werden, wie im folgenden Beispielszenario gezeigt.

Beispielszenario:

Betrachten Sie zwei Tabellen: DISH und DISH_HAS_DISHES, wobei DISH gilt alle verfügbaren Gerichte, und DISH_HAS_DISHES definiert eine Eins-zu-viele-Beziehung zwischen DISHes. Die DISH-Tabelle hat die folgende Struktur:

DISH:
dish_id   dish_name
1         dish_1
2         dish_2
3         dish_3
4         dish_4

Während die DISH_HAS_DISHES-Tabelle so aussieht:

DISH_HAS_DISHES:
meal_id   dish_id
1         2
1         3
1         4

Ziel:

Unser Ziel besteht darin, die Daten in ein Format umzuwandeln, in dem jede Mahlzeit eine entsprechende Zeile hat, in der die IDs und Namen der Gerichte als durch Kommas getrennte Werte aufgeführt sind. Die gewünschte Ausgabe ist:

meal_id     dish_ids     dish_names
1           2,3,4        dish_2, dish_3, dish_4

Lösung:

Um dies zu erreichen, verwenden wir die Funktion GROUP_CONCAT zusammen mit einigen einfachen JOIN-Operationen:

SELECT m.meal_id, 
        GROUP_CONCAT(dish_id) AS dish_ids, 
        GROUP_CONCAT(dish_name) AS dish_names
FROM DISH_HAS_DISHES m JOIN DISH d ON (m.dish_id = d.dish_id)
GROUP BY meal_id

In dieser Abfrage:

  • Wir beginnen mit dem Beitritt zu DISH_HAS_DISHES Tabelle (m) mit der DISH-Tabelle (d) in der Spalte „dish_id“.
  • Innerhalb der SELECT-Anweisung verwenden wir GROUP_CONCAT, um mehrere Werte aus den Spalten „dish_id“ und „dish_name“ zusammenzuführen.
  • Schließlich haben wir Gruppieren Sie die Ergebnisse nach der Mahlzeit_ID, um eine einzelne Zeile für jede Mahlzeit zu erhalten.

Durch Ausführen dieser Abfrage erhalten wir die gewünschte Ausgabe, wobei jede Zeile eine Mahlzeit, ihre Gerichts-IDs und die entsprechenden Gerichtsnamen darstellt, alle als durch Kommas getrennte Werte dargestellt. Diese Technik ist besonders nützlich, wenn Sie mit tabellarischen Daten arbeiten und Informationen über mehrere Zeilen hinweg konsolidieren.

Das obige ist der detaillierte Inhalt vonWie kombiniere ich mehrere Zeilen in einer einzigen durch Kommas getrennten Zeile in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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