Pada dasarnya pertanyaannya adalah bagaimana mendapatkan dari ini:
foo_id foo_name 1 A 1 B 2 C
untuk ini:
foo_id foo_name 1 AB 2 C
Pada dasarnya pertanyaannya adalah bagaimana mendapatkan dari ini:
foo_id foo_name 1 A 1 B 2 C
untuk ini:
foo_id foo_name 1 AB 2 C
Jawaban:
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
Dari tautan di atas GROUP_CONCAT
,: Fungsi ini mengembalikan hasil string dengan nilai-nilai non-NULL gabungan dari grup. Ini mengembalikan NULL jika tidak ada nilai-nilai NULL.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Lebih detail di sini .
Dari tautan di atas GROUP_CONCAT
,: Fungsi ini mengembalikan hasil string dengan nilai-nilai non-NULL gabungan dari grup. Ini mengembalikan NULL jika tidak ada nilai-nilai NULL.
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
: - Di MySQL, Anda bisa mendapatkan nilai gabungan dari kombinasi ekspresi. Untuk menghilangkan nilai duplikat, gunakan klausa DISTINCT . Untuk mengurutkan nilai dalam hasil, gunakan klausa ORDER BY. Untuk mengurutkan dalam urutan terbalik , tambahkankata kunci DESC (descending) ke nama kolom yang Anda sortir dalam klausa ORDER BY. Standarnya adalah urutan naik; ini dapat ditentukan secara eksplisit menggunakan kata kunci ASC. Pemisah default antara nilai-nilai dalam suatu grup adalah koma (","). Untuk menentukan pemisah secara eksplisit, gunakan SEPARATOR diikuti dengan nilai literal string yang harus dimasukkan di antara nilai grup. Untuk menghilangkan pemisah sama sekali, tentukan SEPARATOR '' .
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
ATAU
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
Hasilnya dipotong dengan panjang maksimum yang diberikan oleh variabel sistem group_concat_max_len, yang memiliki nilai default 1024 karakter, jadi pertama-tama kita lakukan:
SET group_concat_max_len=100000000;
dan kemudian, misalnya:
SELECT pub_id,GROUP_CONCAT(cate_id SEPARATOR ' ') FROM book_mast GROUP BY pub_id
group_concat_max_len
konfigurasi ini ? Koneksi / sesi saat ini, atau apakah akan memengaruhi klien lain?
Jawaban yang bagus Saya juga punya masalah dengan NULLS dan berhasil menyelesaikannya dengan memasukkan COALESCE ke dalam GROUP_CONCAT. Contoh sebagai berikut:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Semoga ini bisa membantu orang lain