Adakah mungkin untuk menggabungkan beberapa baris MySQL ke dalam satu medan?
P粉556159786
2023-08-22 14:02:48
<p>Menggunakan <code>MySQL</code>, saya boleh melakukan perkara berikut: </p>
<pre class="brush:php;toolbar:false;">PILIH hobi DARI peoples_hobbies WHERE person_id = 5;</pre>
<p><strong>Output saya: </strong></p>
<pre class="brush:php;toolbar:false;">belanja
memancing
pengekodan</pre>
<p>Tetapi saya hanya mahu satu baris dan satu lajur: </p>
<p><strong>Output yang diingini: </strong></p>
<pre class="brush:php;toolbar:false;">belanja, memancing, pengekodan</pre>
<p>Sebabnya ialah saya memilih berbilang nilai daripada berbilang jadual, dan selepas semua gabungan, saya mendapat lebih banyak baris daripada yang saya mahukan. </p>
<p>Saya mencari fungsi dalam dokumentasi MySQL dan ia kelihatan seperti fungsi <code>CONCAT</code> atau <code>CONCAT_WS</code> </p>
<p>Jadi adakah sesiapa di sini tahu cara melakukannya? </p>
Jika versi MySQL anda (4.1) menyokongnya, anda boleh menyemaknya
GROUP_CONCAT
. Sila rujuk Dokumentasi untuk butiran lanjut.Pernyataan pertanyaan adalah seperti berikut:
Anda boleh menggunakan fungsi
GROUP_CONCAT
:Seperti yang Ludwig sebutkan dalam komennya, anda boleh menambah operator
DISTINCT
untuk mengelakkan pertindihan:Seperti yang Jan sebutkan dalam komen mereka, anda juga boleh mengisih nilai sebelum bergabung, menggunakan
ORDER BY
:Seperti yang Dag nyatakan dalam ulasannya, terdapat had 1024 bait pada keputusan. Untuk membetulkannya, jalankan pertanyaan berikut sebelum pertanyaan anda:
Sudah tentu, anda boleh menukar nilai
2048
mengikut keperluan. Begini cara mengira dan menetapkan nilai: