Merungkai GROUP_CONCAT: Mengekstrak Nilai Individu daripada Data Agregat
Dalam bidang pengurusan pangkalan data, fungsi GROUP_CONCAT ialah alat yang berkuasa untuk mengagregatkan berbilang nilai ke dalam rentetan tunggal yang dipisahkan koma. Walau bagaimanapun, mungkin terdapat keadaan apabila anda menghadapi cabaran yang bertentangan: merungkai rentetan agregat ini ke dalam komponen individunya.
Intipati Masalah
Pertimbangkan data berikut dalam jadual bernama "warna":
| id | colors | |----+----------------------| | 1 | Red,Green,Blue | | 2 | Orangered,Periwinkle |
Matlamat anda adalah untuk mengubah data ini menjadi struktur yang setiap warna diwakili sebagai baris yang berasingan:
| id | colors | |----+------------| | 1 | Red | | 1 | Green | | 1 | Blue | | 2 | Orangered | | 2 | Periwinkle |
Penyelesaian: Membongkar Rentetan
MySQL menyediakan beberapa teknik untuk menyelesaikan tugasan ini. Satu pendekatan menggunakan fungsi SUBSTRING_INDEX dan SUBSTRING seperti berikut:
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) color FROM colors INNER JOIN (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n ON LENGTH(REPLACE(colors, ',' , '')) <= LENGTH(colors)-n.digit ORDER BY id, n.digit
Pertanyaan ini beroperasi dengan:
Menyingkap Misteri: Pengagregatan Songsang atau Un-GROUP_CONCAT
Operasi yang diterangkan di atas sering dirujuk sebagai "pengagregatan terbalik" atau "un-GROUP_CONCAT." Ia membolehkan anda mengekstrak dan menyahhimpun nilai individu daripada data yang sebelum ini telah diagregatkan atau digabungkan. Teknik ini amat berguna apabila anda perlu melakukan analisis atau transformasi lanjut pada titik data individu dan bukannya agregat itu sendiri.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membalikkan GROUP_CONCAT untuk Mengeluarkan Nilai Individu daripada Rentetan Agregat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!