sql >> Databáze >  >> RDS >> Mysql

MySQL GROUP_CONCAT s COLUMN SPLIT

Pokud znáte počet záznamů GROUP_CONCAT (myslím tím, že 3 pole jsou kombinována v případě ID =1 a 2 pole jsou kombinována v případě 2 atd.), pak je to špinavá cesta.

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;

Výstup:

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

Výše uvedený dotaz předpokládá, že jste GROUP_CONCAT-ing 3 pole. Pokud dynamicky generujete dotaz, můžete to zkusit. SQLFIDDLE

UPRAVIT: Poznámka:KÓD se může pro každý ŘÁDEK lišit.(Toto bude ignorováno)



  1. Jak mohu iterovat přes sadu výsledků MySQL?

  2. Připojte se k nám v Las Vegas na SQLintersection a ušetřete 100 $

  3. Upravit dotaz materializovaného pohledu

  4. Zálohujte databázi(y) pomocí dotazu bez použití mysqldump