Rumah >pangkalan data >tutorial mysql >Bagaimanakah GROUP_CONCAT MySQL Boleh Mencapai Penggabungan Bersyarat?

Bagaimanakah GROUP_CONCAT MySQL Boleh Mencapai Penggabungan Bersyarat?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-20 09:14:09908semak imbas

How Can MySQL's GROUP_CONCAT Achieve Conditional Concatenation?

Menggunakan GROUP_CONCAT untuk Conditional Concatenation dalam MySQL

Manipulasi pangkalan data memerlukan menukar data kepada pelbagai format untuk memenuhi keperluan yang berbeza. Satu tugas biasa ialah penyatuan berbilang nilai yang dikaitkan dengan pengecam tertentu. Dalam MySQL, fungsi GROUP_CONCAT menawarkan alat yang berkuasa untuk melaksanakan penggabungan sedemikian dengan cara yang fleksibel.

Pertimbangkan jadual MySQL dengan data berikut:

id Name Value
1 A 4
1 A 5
1 B 8
2 C 9

Objektif kami adalah untuk mengubah data ini ke dalam format tertentu:

id Column
1 A:4,5,B:8
2 C:9

Untuk mencapai format ini, kami boleh menggunakan GROUP_CONCAT untuk menggabungkan berbilang nilai yang dikaitkan dengan setiap pengecam unik. Berikut ialah pecahan terperinci penyelesaian:

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;

Penjelasan:

  • Pertanyaan bermula dengan memilih lajur id dan menggunakan GROUP_CONCAT untuk menggabungkan semua Nama unik nilai yang dikaitkan dengan setiap id ke dalam lajur baharu bernama ColumnName.
  • Untuk mencapai berbilang gabungan, kami menggunakan pertanyaan bersarang. Pertanyaan dalaman mengumpulkan baris mengikut kedua-dua id dan Nama, kemudian menggabungkan lajur Nilai ke dalam rentetan tunggal untuk setiap gabungan unik id dan Nama. Hasilnya ialah lajur bernama Nama, yang mengandungi nilai bercantum daripada setiap baris.
  • Pertanyaan luar kemudian mengumpulkan hasil daripada pertanyaan dalam mengikut id dan menggunakan GROUP_CONCAT pada lajur Nama, menghasilkan format yang diingini.

Sebagai alternatif, jika anda lebih suka menggabungkan semua nilai tanpa mengumpulkan Nama, anda boleh mengubah suai pertanyaan sebagai berikut:

select id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id

Atas ialah kandungan terperinci Bagaimanakah GROUP_CONCAT MySQL Boleh Mencapai Penggabungan Bersyarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn