mysql concatws 用法_mysql中concat,concat_ws,group_concat用法

假设有个表如下:

mysql>select * from student;id name age

1 Dany 24

2 Green 23

3 Henry 23

concat

mysql的concat可以组合显示字段:

mysql> SELECT concat(name,age) FROM studentconcat(name,age)

Dany24

Green23

Henry23

上面就将name和age组合在一起显示了。

concat里面除了可以放字段,还可以放字符串,例如加入逗号来分割name和age:

mysql> SELECT concat(name,',',age) FROM student;

concat(name,',',age)

Dany,24

Green,23

Henry,23

注意:如果concat中有一个字段为NULL,那么整体将会返回NULL。

concat_ws

concat_ws(concat with separator)和concat作用差不多,都是用来组合显示字段的,只不过它可以指定字段间的分割符号:

mysql> SELECT concat_wx('-',name,age) FROM student;concat_wx('-',name,age)

Dany-24

Green-23

Henry-23

concat_ws的第一个参数为分割符,注意:分割符不能为NULL,否则整体都为NULL。

group_concat

group_concat用在group by中,在group by中,只会返回一条数据:

mysql> SELECT name FROM student group by age;name

Dany

Green

例如age为23的人有两个,但是group by只返回了一个,那么如何才能全部显示出来呢?就要用到group_concat:

mysql> SELECT group_concat(name separator '-') FROM student group by age;group_concat(name separator '-')

Dany

Green-Henry

group_concat的主要作用是对group by的产生的没组数据进行去重,排序,显示,完整用法如下:

group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

coalesce和with rollup

在group by后面加上with rollup可以做一个总统计,一般配合coalesce一起使用,coalesce指的是当字段显示为NULL的时候,用后面的备用字符串显示,coalesce的用法为:coalesce(a,b,c);

mysql> SELECT coalesce(age,'all'),group_concat(name separator '-') FROM student group by age with rollup;coalesce(age,'sum') group_concat(name separator '-')

24 Dany

23 Green-Henry

all Dany-Green-Henry

如果只是加with rollup,会有统计功能,但是age那一项会是空的。加了coalesce后,当age是空的时候,就会显示all。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值