Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Rentetan Tunggal Menggunakan GROUP_CONCAT dan CONCAT dalam MySQL?

Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Rentetan Tunggal Menggunakan GROUP_CONCAT dan CONCAT dalam MySQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-13 01:00:10464semak imbas

How to Concatenate Multiple Rows into a Single String Using GROUP_CONCAT and CONCAT in MySQL?

Menggunakan GROUP_CONCAT dalam CONCAT dalam MySQL

Untuk menggabungkan berbilang baris menjadi satu rentetan, sambil mengumpulkannya mengikut nilai sepunya, anda boleh menggunakan Fungsi GROUP_CONCAT. Mari kita teroka aplikasinya dengan contoh praktikal.

Soalan:

Diberikan jadual bernama mytbl dengan data seperti berikut:

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

Bagaimana boleh kami menukar data ini kepada yang berikut format:

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

Jawapan:

Untuk mencapai ini, anda boleh menggunakan gabungan fungsi GROUP_CONCAT dan CONCAT bersarang:

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:

  • Yang paling dalam pertanyaan mengumpulkan data mengikut kedua-dua id dan Nama, kemudian menggabungkan lajur Nilai dengan koma sebagai pemisah untuk setiap kumpulan.
  • Pertanyaan luar mengumpulkan hasil mengikut id dan menggabungkan rentetan Nama yang digabungkan sebelum ini, yang kini mengandungi nilai untuk setiap Nama dalam setiap id.

Gabungan GROUP_CONCAT dan CONCAT bersarang ini membolehkan anda untuk menjana output yang diingini, di mana setiap id dikaitkan dengan rentetan Nama yang dipisahkan koma dan Nilai sepadannya.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Rentetan Tunggal Menggunakan GROUP_CONCAT dan CONCAT dalam MySQL?. 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