group_concat的默認(rèn)分隔符是“,”痕惋,若要改為其他分隔符汇歹,則使用SEPARATOR來(lái)指定通孽,
例如:
mysql> SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR '@#$') AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
除此之外妇智,還可以對(duì)這個(gè)組的值來(lái)進(jìn)行排序再連接成字符串,例如按courses_id降序來(lái)排:
mysql> SELECT student_id, GROUP_CONCAT(courses_id ORDER BY courses_id DESC) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id;
注意的問(wèn)題:
1.int字段鏈接失敗
連接起來(lái)的字段如果是int型辟癌,一定要轉(zhuǎn)換成char再拼起來(lái)
例如:
select group_concat(CAST(bm_ids as char)) from t_dep 返回逗號(hào)隔開(kāi)的串
2.長(zhǎng)度陷阱?
使用group_concat_max_len系統(tǒng)變量寒屯,你可以設(shè)置允許的最大長(zhǎng)度,默認(rèn)長(zhǎng)度是1024。
3.排除空字符串問(wèn)題
mysql手冊(cè)是說(shuō)group_concat會(huì)自動(dòng)排除null的值黍少,但是不會(huì)排除空字符串,用case when...then...else...end把空字符串值改為null
例如:
select??group_concat(case when bm_ids<>' ' THEN bm_ids else null END) AS bm_ids
? ? ? ? FROM t_dep;
---------------------