Rumah > Soal Jawab > teks badan
P粉3669463802023-08-23 12:03:30
Jika versi MySQL anda (4.1) menyokongnya, anda boleh menyemaknya GROUP_CONCAT
. Sila rujuk Dokumentasi untuk butiran lanjut.
Pernyataan pertanyaan adalah seperti berikut:
SELECT GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies WHERE person_id = 5 GROUP BY 'all';
P粉0020233262023-08-23 10:26:52
Anda boleh menggunakan fungsi GROUP_CONCAT
:
SELECT person_id, GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
Seperti yang Ludwig sebutkan dalam komennya, anda boleh menambah operator DISTINCT
untuk mengelakkan pertindihan:
SELECT person_id, GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
Seperti yang Jan sebutkan dalam komen mereka, anda juga boleh mengisih nilai sebelum bergabung, menggunakan ORDER BY
:
SELECT person_id, GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
Seperti yang Dag nyatakan dalam ulasannya, terdapat had 1024 bait pada keputusan. Untuk membetulkannya, jalankan pertanyaan berikut sebelum pertanyaan anda:
SET group_concat_max_len = 2048;
Sudah tentu, anda boleh menukar nilai 2048
mengikut keperluan. Begini cara mengira dan menetapkan nilai:
SET group_concat_max_len = CAST( (SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ') FROM peoples_hobbies GROUP BY person_id) AS UNSIGNED);