Dapatkan hasil pertanyaan MySQL sebagai senarai dipisahkan koma
Dalam MySQL, anda mungkin perlu mendapatkan semula hasil pertanyaan sebagai senarai dipisahkan koma. Walaupun anda boleh menggunakan subqueries untuk mengekstrak maklumat tertentu, anda menghadapi beberapa batasan apabila ia datang untuk mempersembahkan data dalam format yang diingini.
Soalan:
Pertimbangkan pertanyaan berikut:
<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>
Subkueri mengembalikan setiap nama tapak sebagai lajur yang berasingan, yang tidak sepadan dengan hasil senarai yang dipisahkan koma yang dikehendaki.
Penyelesaian:
MySQL menyediakan fungsi GROUP_CONCAT
untuk mencapai matlamat ini. Dengan memanfaatkan fungsi ini, anda boleh mengubah suai pertanyaan anda seperti berikut:
<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>
GROUP_CONCAT
Menggabungkan nilai dalam lajur yang ditentukan (dalam kes ini, lajur "nama" dalam jadual "tapak") dan memisahkannya dengan pembatas yang telah ditetapkan (biasanya koma). Hasilnya kemudian dikumpulkan mengikut lajur "id" dan "nama" dalam jadual "penerbitan", menyediakan rekod unik untuk setiap penerbitan dan tapak berkaitannya, yang dipaparkan sebagai senarai dipisahkan koma.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Keputusan Pertanyaan MySQL sebagai Senarai Dipisahkan Koma?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!