Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann ich mit MySQL mehrere Zeilen zu einer durch Kommas getrennten Zeichenfolge kombinieren?

Susan Sarandon
Freigeben: 2024-11-22 16:44:12
Original
354 Leute haben es durchsucht

How can I Combine Multiple Rows into a Comma-Separated String Using MySQL?

MySQL: Konsolidieren mehrerer Zeilen zu einer durch Kommas getrennten Zeichenfolge

In MySQL kann die Funktion GROUP_CONCAT verwendet werden, um mehrere Zeilen zu einer zusammenzuführen einzelne, durch Kommas getrennte Zeichenfolge. Diese Technik ist besonders nützlich, wenn Daten aus Tabellen mit Eins-zu-viele-Beziehungen kombiniert werden.

Problemstellung

Beachten Sie die folgenden Tabellen:

| DISH |
|---|---|
| dish_id | dish_name |
| 1 | dish_1 |
| 2 | dish_2 |
| 3 | dish_3 |
| 4 | dish_4 |

| DISH_HAS_DISHES |
|---|---|
| meal_id | dish_id |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
Nach dem Login kopieren

Das Ziel besteht darin, diese Daten in ein Format umzuwandeln, in dem jede Mahlzeit_ID mit einer durch Kommas getrennten Liste von Dish_IDs und Dish_Names verknüpft ist. Die gewünschte Ausgabe ist:

| meal_id | dish_ids | dish_names |
|---|---|---|
| 1 | 2,3,4 | dish_2, dish_3, dish_4 |
Nach dem Login kopieren
Nach dem Login kopieren

Lösung

Die Funktion GROUP_CONCAT bietet eine effiziente Möglichkeit, diese Konsolidierung zu erreichen. Die folgende Abfrage verknüpft die Tabellen DISH und DISH_HAS_DISHES, gruppiert die Ergebnisse nach Mahlzeit_ID und verwendet die Funktion GROUP_CONCAT, um die Werte „dish_id“ und „dish_name“ für jede Gruppe zu verketten:

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;
Nach dem Login kopieren

Ergebnis

Das Ausführen dieser Abfrage führt zum gewünschten Ergebnis Ausgabe:

| meal_id | dish_ids | dish_names |
|---|---|---|
| 1 | 2,3,4 | dish_2, dish_3, dish_4 |
Nach dem Login kopieren
Nach dem Login kopieren

Fazit

Die Funktion GROUP_CONCAT bietet ein leistungsstarkes Tool zum Kombinieren mehrerer Zeilen in einer einzigen Zeichenfolge. Diese Technik ist besonders nützlich in Szenarien, in denen Sie Daten aus verwandten Tabellen konsolidieren müssen, beispielsweise im Fall von Eins-zu-viele-Beziehungen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit MySQL mehrere Zeilen zu einer durch Kommas getrennten Zeichenfolge kombinieren?. 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