Cara Menggunakan GROUP_CONCAT dalam CONCAT dalam MySQL
Dalam senario tertentu, anda mungkin menghadapi keperluan untuk mengubah data yang disimpan dalam jadual MySQL ke dalam format tertentu. Sebagai contoh, katakan anda mempunyai jadual dengan data seperti ini:
id | Name | Value |
---|---|---|
1 | A | 4 |
1 | A | 5 |
1 | B | 8 |
2 | C | 9 |
Matlamat anda adalah untuk mendapatkan hasil berikut:
id | Column |
---|---|
1 | A:4,5,B:8 |
2 | C:9 |
Untuk mencapai transformasi ini, anda perlu gunakan fungsi GROUP_CONCAT(). Fungsi ini menonjol dalam keupayaannya untuk menggabungkan nilai daripada berbilang baris, dikumpulkan mengikut kriteria tertentu.
Untuk bermula, anda perlu menjana subkueri yang menggabungkan nilai yang dikumpulkan mengikut kedua-dua id dan Nama. Coretan kod berikut menunjukkan langkah ini:
select id, concat(`Name`, ':', group_concat(`Value` separator ',')) as Name from mytbl group by id, Name
Subkueri yang terhasil akan mencipta lajur baharu bernama Nama yang merangkumi semua nilai yang digabungkan dengan titik bertindih dan koma, dikumpulkan mengikut kedua-dua id dan Nama.
| id | Name | | --- | ---- | | 1 | A:4,5 | | 1 | B:8 | | 2 | C:9 |
Akhir sekali, gunakan GROUP_CONCAT() sekali lagi pada pertanyaan paling luar, kali ini menggunakan id sebagai kriteria pengelompokan. Langkah ini akan menggabungkan nilai Nama daripada subkueri, dipisahkan dengan koma:
select id, group_concat(`Name` separator ',') as `ColumnName` from ( select id, concat(`Name`, ':', group_concat(`Value` separator ',')) as Name from mytbl group by id, Name ) tbl group by id;
Hasilnya akan sama seperti yang dikehendaki:
| id | Column | | --- | ----- | | 1 | A:4,5,B:8 |
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan GROUP_CONCAT dan CONCAT untuk Pengagregatan Data Kompleks dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!