sql >> Database >  >> RDS >> Mysql

MySQL GROUP_CONCAT met COLUMN SPLIT

Als u het aantal GROUP_CONCAT-vermeldingen kent (ik bedoel 3 velden worden gecombineerd in het geval van ID =1 en 2 velden worden gecombineerd in het geval van 2 enz.), dan is er een vuile manier.

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;

Uitgang:

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

Bij de bovenstaande query wordt ervan uitgegaan dat u GROUP_CONCAT 3 velden gebruikt. Als u dynamisch query's genereert, kunt u het proberen. SQLFIDDLE

BEWERKEN: Opmerking:de CODE kan per RIJ verschillen.(Dit negeren)



  1. LEN-functie zonder volgspaties in SQL Server

  2. Is mysqli_real_escape_string voldoende om SQL-injectie of andere SQL-aanvallen te voorkomen?

  3. mysqli_num_rows werkt niet correct

  4. TPC-H-prestaties sinds PostgreSQL 8.3