Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL GROUP_CONCAT mit COLUMN SPLIT

Wenn Sie die Anzahl der GROUP_CONCAT-Einträge kennen (ich meine, 3 Felder werden kombiniert im Fall von ID =1 und 2 Felder werden kombiniert im Fall von 2 usw.), dann gibt es einen schmutzigen Weg.

SELECT ID, SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 1), ',', -1) AS CODE1,
If(  length(GROUP_CONCAT(NAME)) - length(replace(GROUP_CONCAT(NAME), ',', ''))>1,  
       SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 2), ',', -1) ,NULL) 
           as CODE2,
   SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 3), ',', -1) AS CODE3
FROM test
GROUP BY ID;

Ausgabe:

ID  CODE1   CODE2   CODE3
1   A          B    C
2   D       (null)  E
3   F          G    H

Die obige Abfrage geht davon aus, dass Sie 3 Felder GROUP_CONCAT-ing sind. Wenn Sie Abfragen dynamisch generieren, können Sie es versuchen. SQLFIDDLE

BEARBEITEN: Hinweis:Der CODE kann für jede Zeile variieren.(Ignorieren)