Bagaimana untuk Menyertai Jadual dengan Medan Sertai Dipisahkan Koma dalam SQL?

Barbara Streisand
Lepaskan: 2024-11-12 07:41:01
asal
296 orang telah melayarinya

How to Join Tables with Comma-Separated Join Fields in SQL?

Menyertai Jadual dengan Medan Gabungan Dipisahkan Koma

Apabila bekerja dengan jadual yang mengandungi senarai dipisahkan koma, ia menjadi mencabar untuk melakukan gabungan menggunakan konvensional kaedah. Dalam kes ini, kami menghadapi dua jadual, "kategori" dan "filem", di mana lajur "kategori" dalam jadual "filem" mengandungi berbilang ID kategori yang dipisahkan dengan koma.

Untuk mencapai gabungan yang mendapatkan semula nama kategori yang sepadan dan bukannya ID mentah dalam lajur "kategori", kita boleh memanfaatkan SQL berikut pertanyaan:

select
    m.id,
    group_concat(c.name)
from
    movies m
    join categories c on find_in_set(c.id, m.categories)
group by
    m.id
Salin selepas log masuk

Pertanyaan ini menggunakan fungsi find_in_set() untuk menentukan sama ada ID kategori yang dinyatakan dalam jadual "kategori" wujud dalam senarai dipisahkan koma yang disimpan dalam medan "m.categories". Dengan menyemak secara berulang setiap kategori calon daripada jadual "kategori" berbanding nilai "m.categories", pertanyaan mengenal pasti kategori yang sepadan.

Fungsi group_concat() kemudiannya digunakan untuk mengagregatkan nama kategori yang sepadan ke dalam tatasusunan , menggabungkannya ke dalam medan rentetan tunggal untuk setiap baris dalam set hasil. Akhir sekali, pertanyaan mengumpulkan hasil mengikut lajur "m.id", memastikan setiap ID filem muncul sekali sahaja dalam output.

Akibatnya, pertanyaan ini menggantikan ID kategori yang dipisahkan koma dengan cekap dalam jadual "filem" dengan nama kategori yang sepadan, dengan berkesan melaksanakan operasi gabungan pada jadual dengan medan gabungan bukan tradisional.

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Jadual dengan Medan Sertai Dipisahkan Koma dalam SQL?. 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