Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Baris Dipisahkan Koma Tunggal dalam MySQL?

Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Baris Dipisahkan Koma Tunggal dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-08 12:21:02675semak imbas

How to Combine Multiple Rows into a Single Comma-Separated Row in MySQL?

MySQL: Menukar Berbilang Baris menjadi Baris Dipisahkan Koma Tunggal

Dalam pangkalan data MySQL, anda mungkin menghadapi situasi di mana anda mahu memekatkan berbilang baris menjadi satu baris, dengan lajur tertentu diwakili sebagai nilai dipisahkan koma. Ini boleh dicapai dengan menggunakan fungsi GROUP_CONCAT, seperti yang ditunjukkan dalam contoh senario berikut.

Contoh Senario:

Pertimbangkan dua jadual: DISH dan DISH_HAS_DISHES, tempat DISH memegang semua hidangan yang tersedia dan DISH_HAS_DISHES mentakrifkan hubungan satu-ke-banyak antara DISH. Jadual DISH mempunyai struktur berikut:

DISH:
dish_id   dish_name
1         dish_1
2         dish_2
3         dish_3
4         dish_4

Manakala jadual DISH_HAS_DISHES kelihatan seperti ini:

DISH_HAS_DISHES:
meal_id   dish_id
1         2
1         3
1         4

Objektif:

Matlamat kami adalah untuk mengubah data menjadi format di mana setiap hidangan mempunyai baris yang sepadan, menyenaraikan ID dan nama hidangannya sebagai nilai dipisahkan koma. Output yang dikehendaki ialah:

meal_id     dish_ids     dish_names
1           2,3,4        dish_2, dish_3, dish_4

Penyelesaian:

Untuk mencapai ini, kami akan menggunakan fungsi GROUP_CONCAT, bersama-sama dengan beberapa operasi JOIN yang mudah:

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

Dalam pertanyaan ini:

  • Kami mulakan dengan menyertai jadual DISH_HAS_DISHES (m) dengan jadual DISH (d) pada lajur dish_id.
  • Dalam pernyataan SELECT , kami menggunakan GROUP_CONCAT untuk menggabungkan berbilang nilai daripada lajur dish_id dan dish_name.
  • Akhir sekali, kami mengumpulkan hasil dengan meal_id untuk mendapatkan satu baris bagi setiap hidangan.

Dengan melaksanakan pertanyaan ini, kami akan memperoleh output yang diingini, di mana setiap baris mewakili hidangan, ID hidangannya dan nama hidangannya yang sepadan, semuanya diwakili sebagai nilai dipisahkan koma. Teknik ini amat berguna apabila bekerja dengan data jadual dan menyatukan maklumat merentas berbilang baris.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Baris Dipisahkan Koma Tunggal 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