Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL GROUP_CONCAT с COLUMN SPLIT

Ако знаете броя на записите GROUP_CONCAT (имам предвид, че 3 полета са комбинирани в случай на ID =1 и 2 полета са комбинирани в случай на 2 и т.н.), тогава има мръсен начин.

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;

Изход:

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

Горната заявка предполага, че сте GROUP_CONCAT-ing 3 полета. Ако динамично генерирате заявка, можете да опитате. SQLFIDDLE

РЕДАКТИРАНЕ: Забележка:КОДът може да варира за всеки РЕД.( Пренебрегвайки това)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Наистина ли трябва да направя mysql_close()

  2. Каква е разликата между VARCHAR и CHAR?

  3. MySQL:Не може да се използва SIGNAL в Trigger

  4. MySQL:Как мога да получа времевата марка на последното вмъкване в базата данни

  5. Потребителите 'User'@'%' и 'User'@'localhost' не са ли еднакви?