Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bisakah saya menggabungkan beberapa baris MySQL menjadi satu bidang?

Anda dapat menggunakan GROUP_CONCAT :

SELECT person_id,
   GROUP_CONCAT(hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;

Seperti yang dinyatakan Ludwig dalam miliknya komentar, Anda dapat menambahkan DISTINCT operator untuk menghindari duplikat:

SELECT person_id,
   GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;

Seperti yang dinyatakan Jan dalam mereka komentar, Anda juga dapat mengurutkan nilai sebelum meledakkannya menggunakan ORDER BY :

SELECT person_id, 
       GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ')
FROM peoples_hobbies
GROUP BY person_id;

Seperti yang dinyatakan Dag dalam komentarnya, ada batas 1024 byte pada hasilnya. Untuk mengatasinya, jalankan kueri ini sebelum kueri Anda:

SET group_concat_max_len = 2048;

Tentu saja, Anda dapat mengubah 2048 sesuai dengan kebutuhan Anda. Untuk menghitung dan menetapkan nilai:

SET group_concat_max_len = CAST(
                     (SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ')
                           FROM peoples_hobbies
                           GROUP BY person_id) AS UNSIGNED);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL DATEDIFF() vs TIMEDIFF():Apa Bedanya?

  2. Cara Mengubah Port MySQL/MariaDB Default di Linux

  3. Apa efek menggunakan susunan biner?

  4. konversi string tanggal ke bidang datetime mysql

  5. Sistem Konfigurasi Gagal Inisialisasi