MySQL: Menyatukan Berbilang Baris menjadi Rentetan Dipisahkan Koma
Dalam MySQL, fungsi GROUP_CONCAT boleh digunakan untuk menggabungkan berbilang baris menjadi satu rentetan tunggal yang dipisahkan koma. Teknik ini amat berguna apabila menggabungkan data daripada jadual dengan perhubungan satu dengan banyak.
Pernyataan Masalah
Pertimbangkan jadual berikut:
| DISH | |---|---| | dish_id | dish_name | | 1 | dish_1 | | 2 | dish_2 | | 3 | dish_3 | | 4 | dish_4 | | DISH_HAS_DISHES | |---|---| | meal_id | dish_id | | 1 | 2 | | 1 | 3 | | 1 | 4 |
Matlamatnya adalah untuk mengubah data ini menjadi format di mana setiap meal_id dikaitkan dengan senarai dish_id yang dipisahkan koma dan nama_hidangan. Output yang dikehendaki ialah:
| meal_id | dish_ids | dish_names | |---|---|---| | 1 | 2,3,4 | dish_2, dish_3, dish_4 |
Penyelesaian
Fungsi GROUP_CONCAT menyediakan cara yang cekap untuk mencapai penyatuan ini. Pertanyaan berikut menyertai jadual DISH dan DISH_HAS_DISHES, mengumpulkan hasil mengikut meal_id dan menggunakan fungsi GROUP_CONCAT untuk menggabungkan nilai dish_id dan dish_name untuk setiap kumpulan:
SELECT m.meal_id, GROUP_CONCAT(dish_id) AS dish_ids, GROUP_CONCAT(dish_name) AS dish_names FROM DISH_HAS_DISHES m JOIN DISH d ON (m.dish_id = d.dish_id) GROUP BY meal_id;
Hasil
Melaksanakan pertanyaan ini akan menghasilkan yang diingini output:
| meal_id | dish_ids | dish_names | |---|---|---| | 1 | 2,3,4 | dish_2, dish_3, dish_4 |
Kesimpulan
Fungsi GROUP_CONCAT menyediakan alat yang berkuasa untuk menggabungkan berbilang baris menjadi satu rentetan. Teknik ini amat berguna dalam senario di mana anda perlu menyatukan data daripada jadual berkaitan, seperti dalam kes perhubungan satu dengan banyak.
Atas ialah kandungan terperinci Bagaimanakah saya boleh Menggabungkan Berbilang Baris ke dalam Rentetan Dipisahkan Koma Menggunakan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!