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 |
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 |
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;
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 |
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!