对查询结果进行拼接,可使用group_concat(),concat(),concat_ws()函数。简单介绍下如何应用。
功能:可以group by产生的同一分组的值连接起来,返回一个字符串。
参数格式:
group_concat([distinct]要连接的字段 [order by 排序字段 asc/desc][separator '分隔符'])
distinct可排除重复值,order by对值进行排序,separator设置分隔符,缺省为逗号,适合多表查询,把对应表和这个表相关的组成一个组一条记录。
功能:将多个字符串连接成一个字符串
这里注意:并且每个字符串不能为空,否则返回null
参数格式:
concat(str1,separator,str2,....) 用分隔符拼接,多个字段需写多个分隔符
或者
concat(str1,str2,....) 直接拼接
功能和concat()一样,但可以一次性指定分隔符
参数格式:
concat_ws(separator,str1,str2,.....)
separator
指定分隔符,注意分隔符不能为null,如果为null,则返回结果为null
举例:
userinfo数据表如下:
testgroup数据表如下:
将userinfo数据表中phone和area字段用’-'进行拼接
SQL server实现:
select concat(phone,'-',area) from userinfo
select concat_ws('-',phone,area) from userinfo
结果:
将testgroup数据表中展示id的所有分数
Mysql实现:
select id,group_concat(distinct score SEPARATOR '~') as new from testgroup
group by id --Mysql成功,就是每个id为一行 在前台每行显示该id所有分数
select id,group_concat(distinct score ) as new from testgroup
group by id --默认分隔符为逗号