group_concat() 函數的作用是將group by產生的同一個分組中的值連接起來,返回一個字符串結果;
基本語法:group_concat( [distinct] 要連接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] );
說明:可以使用distinct排除重復值;可以使用order by子句對結果中的值進行排序;
返回的字符串的默認分隔符從逗號(,
),若要改為其他分隔符,則使用SEPARATOR
子句修改分隔符,如下語句:
注意:
mysql中group_concat函數處理字符串的長度是由限制的,默認長度為1024,如果拼接的字符串超過1024,就會在數據庫里面被截取,所以不會顯示所有拼接數據;
可以使用如下語句進行設置:
設置當前session的group_concat長度,其他session連接不受影響:
SET SESSION group_concat_max_len = 102400;
設置全局group_concat長度:
SET GLOBAL group_concat_max_len = 102400;
group_concat加排序加分隔
``` select group_concat(CONCAT(bs.name, ':', bsa.jy) order by IFNULL(bd2.disp_order, 99),IFNULL(bgh2.disp_order, 99), IFNULL(bi.disp_order, 99) SEPARATOR '\t\r') from T_Item_Sickness tis INNER JOIN B_Sickness bs on bs.id = tis.sickness_id INNER JOIN B_Sickness_Advice bsa on bsa.sickness_id = tis.sickness_id left join B_Group_HD bgh2 on bgh2.id = tis.group_id left join B_Dept bd2 on bd2.id = bgh2.dept_id left join B_Item bi on bi.id = tis.item_id where tis.pa_id = '' and tis.group_id = '' ```