group_concat的預設分隔符是「,」,若要改為其他分隔符,則使用separator來指定,
例如:
mysql> select student_id, group_concat(courses_id separator '@#$') as courses from student_courses where student_id=2 group by student_id;
除此之外,還可以對這個組的值來進行排序再連線成字串,例如按courses_id降序來排:
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;
1.int欄位的連線陷阱
當你用group_concat的時候請注意,連線起來的字段如果是int型,一定要轉換成char再拼起來, 否則在你執行後(executescalar或者其它任何執行sql返回結果的方法)返回的將不是乙個逗號隔開的串, 而是byte。 該問題當你在sqlyog等一些工具中是體現不出來的,所以很難發現。select group_concat(ipaddress) from t_ip 返回逗號隔開的串
select group_concat(id) from t_ip 返回byte
select group_concat(cast(id as char)) from t_dep 返回逗號隔開的串
select group_concat(convert(id , char)) from t_dep 返回逗號隔開的串
附cast,convert的用法:
cast(expr as type), convert(expr,type) , convert(expr using transcoding_name)
cast() 和convert() 函式可用來獲取乙個型別的值,並產生另乙個型別的值。 這個型別 可以是以下值其中的 乙個: binary[(n)] char[(n)] date datetime decimal signed [integer] time unsigned [integer]
2.長度陷阱
用group_concat連線欄位的時候是有長度限制的,並不是有多少連多少。但你可以設定一下。使用group_concat_max_len系統變數,你可以設定允許的最大長度。
程式中進行這項操作的語法如下,其中 val 是乙個無符號整數: set [session | global] group_concat_max_len = val;
若已經設定了最大長度, 則結果被截至這個最大長度。 在sqlyog中執行 set global group_concat_max_len = 10 後,
重新開啟sqlyog,設定就會生效。
)
SQL函式Group concat用法
group concat distinct 要連線的字段 order by asc desc 排序字段 separator 分隔符 表結構與資料如上 現在的需求就是每個id為一行 在前台每行顯示該id所有分數 group concat 上場!可以看到 根據id 分成了三行 並且分數預設用 逗號 分割...
SQL函式Group concat用法
此篇內容借用網路資源,感謝寸草心2130 sql語法如下 group concat distinct 要連線的字段 order by asc desc 排序字段 separator 分隔符 基礎資料如下 現在的需求就是每個id為一行 在前台每行顯示該id所有分數 可以看到 根據id 分成了三行 並且...
concat以及group concat的用法
1 功能 將多個字串連線成乙個字串。2 語法 concat str1,str2,返回結果為連線引數產生的字串,如果有任何乙個引數為null,則返回值為null。3 舉例 例1 select concat id,name,score as info from tt2 1 功能 和concat 一樣,將...