sql >> Database teknologi >  >> RDS >> Mysql

MySQL GROUP_CONCAT med COLUMN SPLIT

Hvis du kender antallet af GROUP_CONCAT-poster (jeg mener, 3 felter er kombineret i tilfælde af ID =1 og 2 felter kombineres i tilfælde af 2 osv.), så er der en beskidt måde.

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;

Output:

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

Ovenstående forespørgsel antager, at du GROUP_CONCAT-er 3 felter. Hvis du dynamisk genererer forespørgsler, kan du prøve. SQLFIDDLE

EDIT: Bemærk:KODEN kan variere for hver RÆKKE.(Ignorerer dette)



  1. Migrering af MySQL UTF8 til UTF8MB4 problemer og spørgsmål

  2. Hvornår skal jeg bruge Start/End Blocks og Go nøgleordet i SQL Server?

  3. Databasedesignkoncepter med SQL Server Management Studio (SSMS) del 1

  4. Autofuldfør tekstboksresultater baseret på SQL-database