Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL GROUP_CONCAT z COLUMN SPLIT

Jeśli znasz liczbę wpisów GROUP_CONCAT (mam na myśli połączenie 3 pól w przypadku ID =1 i 2 pól w przypadku 2 itd.), to jest to nieczysty sposób.

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;

Wyjście:

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

Powyższe zapytanie zakłada, że ​​masz GROUP_CONCAT-ing 3 pola. Jeśli dynamicznie generujesz zapytania, możesz spróbować. SQLFIDDLE

EDYTUJ: Uwaga:KOD może się różnić dla każdego WIERSZ.(Ignorowanie tego)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Autouzupełnianie w kliencie wiersza poleceń MySQL

  2. Tabela łączenia wewnętrznego w odniesieniu do wartości maksymalnej

  3. Jak odwrócić kolejność znaków w ciągu znaków w MySQL

  4. Zapytanie MySQL Ciąg zawiera

  5. Wybieranie przedmiotu pasującego do wielu tagów