Subqueries MySQL dan Senarai Dipisahkan Koma: Panduan Praktikal
Bekerja dengan berbilang jadual MySQL selalunya melibatkan subkueri. Walau bagaimanapun, menjana senarai yang dipisahkan koma daripada hasil subkueri boleh menjadi rumit. Panduan ini menunjukkan penyelesaian menggunakan GROUP_CONCAT
.
Cabaran:
Pertimbangkan senario ini: anda memerlukan pertanyaan yang mendapatkan semula ID penerbitan, nama dan senarai nama tapak yang dipisahkan koma. Pendekatan naif menggunakan subkueri mungkin kelihatan seperti ini:
<code class="language-sql">SELECT p.id, p.name, (SELECT name FROM sites s WHERE s.id = p.site_id) AS site_list FROM publications p;</code>
Ini tidak akan menghasilkan rentetan yang dipisahkan koma; sebaliknya, ia mengembalikan satu nama tapak bagi setiap baris.
Penyelesaian dengan GROUP_CONCAT
:
MySQL GROUP_CONCAT
ialah kunci untuk mencipta senarai yang dipisahkan koma. Inilah pertanyaan yang dipertingkatkan:
<code class="language-sql">SELECT p.id, p.name, GROUP_CONCAT(s.name) AS site_list FROM sites s INNER JOIN publications p ON s.id = p.site_id GROUP BY p.id, p.name;</code>
Cara ia Berfungsi:
INNER JOIN
: Ini memautkan jadual publications
dan sites
dengan cekap berdasarkan padanan site_id
. Hanya penerbitan dengan tapak yang sepadan disertakan.GROUP_CONCAT(s.name)
: Fungsi ini menggabungkan semua s.name
nilai (nama tapak) untuk setiap ID penerbitan ke dalam rentetan dipisahkan koma tunggal, disimpan dalam lajur site_list
.GROUP BY p.id, p.name
: Ini mengumpulkan hasil mengikut ID penerbitan dan nama, memastikan GROUP_CONCAT
beroperasi dengan betul untuk setiap penerbitan.Pertanyaan yang disemak ini memberikan output yang diingini: ID penerbitan, nama dan senarai nama tapak yang dipisahkan koma yang diformat dengan kemas.
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Senarai Dipisahkan Koma dengan Cekap daripada Subkueri MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!