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

Bagaimanakah GROUP_CONCAT MySQL Boleh Mencapai Penggabungan Bersyarat?

Mary-Kate Olsen
Lepaskan: 2024-12-20 09:14:09
asal
960 orang telah melayarinya

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;
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan