Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL GROUP_CONCAT dengan COLUMN SPLIT

Jika Anda mengetahui jumlah entri GROUP_CONCAT (maksud saya 3 bidang digabungkan dalam kasus ID =1 dan 2 bidang digabungkan dalam kasus 2 dll), maka ada cara kotor.

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;

Keluaran:

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

Kueri di atas mengasumsikan bahwa Anda GROUP_CONCAT-ing 3 bidang. Jika Anda membuat kueri secara dinamis, Anda dapat mencobanya. SQLFIDDLE

EDIT: Catatan:KODE mungkin berbeda untuk setiap ROW.( Mengabaikan ini)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mencegat permintaan DB? (MySQL)

  2. kesalahan mySQL:#1248 - Setiap tabel turunan harus memiliki alias sendiri

  3. Pilih id sisipan terakhir

  4. apakah mungkin untuk akses jarak jauh ke database mysql di shared hosting?

  5. Mengapa tidak menonaktifkan ONLY_FULL_GROUP_BY