mysql-group_concat

數據庫中的數據一般分行存儲,但是在取出的時候,可能要求變換格式顯示,比如行轉列、列轉行、單元格合併等操作。本示例爲說明行轉列。

原數據格式如下(student表):

IDNAMESUBJECTSUB_SCORE
1小紅數學90
2小紅語文91
3小紅英語92
4小明數學80
5小明語文81
6小明英語82
7小華數學70
8小華語文71
9小華英語72
期望輸出的格式:

格式(一)

ID
NAMEsubjectsscores
1小紅數學,語文,英語90,91,92
4小明數學,語文,英語80,81,82
7小華數學,語文,英語70,71,72
格式(二)

IDNAMEsubjectsscores
1小紅數學|語文|英語90|91|92
4小明數學|語文|英語80|81|82
7小華數學|語文|英語70|71|72

格式一:

group_concat默認的分隔符是“,”,代碼如下:

select  id, name , group_concat(subject) as subjects , group_concat(sub_score) as scores

from student

group by name desc

執行結果爲:

Center

注:當列是數字時,通過group_concat變成BLOB類型,需進行轉義,修正代碼如下:

select id , name , group_concat(subject) as subjects , group_concat(cast(sub_score as char)) as scores

from student 

group by name desc

執行結果爲:

Center

格式二:

方法一:數字類型的字段需要進行轉義

select id,name,group_concat(subject separator '|') as subjects,group_concat(cast(sub_score as char )separator '|') as scores
from student
group by name desc

方法二:

select id,name,group_concat(subject separator '|') as subjects,replace(group_concat(sub_score),',','|') as scores
from student
group by name desc

執行結果爲:

Center

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章