以成绩表为例
一个学生有多门成绩,将成绩拼接起来
1. CONCAT(str1,str2,...)
连接字符串(有一个参数为null,则返回null)
SELECT CONCAT(name,chinese) FROM grade
结果:xiaoming86
这样拼接不直观,我们给他加上逗号分隔
2. CONCAT_WS(separator,str1,str2,...)
以指定分隔符连接字符串(concat with separator)(有一个参数(包括separator)为null,则返回null)
SELECT CONCAT_WS(',',name,chinese) FROM user_info
结果:xiaoming,86
3. GROUP_CONCAT(字段 order by 字段 separator '分隔符')
将GROUP BY产生的同一个分组中的值连接起来,返回一个字符串结果。
eg. 一个学生参加过很多次考试,将这个学生所有考试的语文成绩查询显示出来
SELECT name, GROUP_CONCAT(chinese) ORDER BY time SEPARATOR '/') FROM grade GROUP BY name
结果:xiaoming 86,90,60,90
分隔符不写时默认为逗号
eg. 一个学生参加过很多次考试,将这个学生所有考试的语文,数学,英语成绩以时间顺序查询显示出来,科目之间以“-”分隔,成绩间“,”分隔,姓名和成绩以"/"分隔
SELECT CONCAT_WS('/',name,GROUP_CONCAT(CONCAT_WS('-',chinese,math,english) ORDER BY time)) FROM grade GROUP BY name
结果: xiaoming/80-60-90,50-60-40,60-60-90,89-39-90