翼度科技»论坛 编程开发 mysql 查看内容

group by 、concat_ws()、 group_caoncat()的使用

15

主题

15

帖子

45

积分

新手上路

Rank: 1

积分
45
group系列

之前觉得这里简单不需要再进行总结了。后来发现还是需要总结巩固一下,还是有一些方法之类的之前未使用过。这里来重新整理,记录一下。
group by

将表中的数据根据某个条件进行分组。
比如下面这张表:

如果我们按照班级进行分组 那么数据将会是这样的:

通过mysql执行表格数据进行校验:
  1. select classname ,GROUP_CONCAT(id,name,courseName,score SEPARATOR '%') from winfun GROUP BY classname;
复制代码
运行结果:
group_concat()待会再总结。

根据group by的特性,这也是为什么通过group by进行分组后,我们对数据操作需要借助一些函数。
分组后数据变成了一行中包含多条数据,没办法在mysql中通过表格表现出来。
concat_ws()函数

caoncat_ws()函数可以把字段之间拼接起来
官网示例:
  1. mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name');
  2.         -> 'First name,Second name,Last Name'
  3. mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name');
  4.         -> 'First name,Last Name'
复制代码
功能就是将字符串通过自己设定的分隔符拼接起来:
  1. select CONCAT_WS(',,,','he','ll','o');
复制代码
运行结果:

group_concat()函数

在group by中使用过该函数,它可以把通过group by分组后后面的数据拼接起来。
通过group by分组后的数据:

如果我们按照classname分组,那么分组后当前组的数据,就是group_concat()的主要拼接对象。

group_concat()语法:
  1. GROUP_CONCAT([DISTINCT] expr [,expr ...]
  2.              [ORDER BY {unsigned_integer | col_name | expr}
  3.                  [ASC | DESC] [,col_name ...]]
  4.              [SEPARATOR str_val])
复制代码
示例sql:
  1. select classname ,GROUP_CONCAT(id,name,courseName,score ORDER BY score  SEPARATOR '%') from winfun
  2. GROUP BY classname;
  3. group_caoncat(要拼接的数据[,要拼接的数据...] [order by column desc|asc] SEPARATOR 'string')
  4. -- SEPARATOR 这里设置每条数据间的分割符
复制代码
运行结果:

这里我们可以和上面的concat_ws()函数一起来使用:
  1. select classname ,GROUP_CONCAT(CONCAT_WS(' | ',id,name,courseName,score) ORDER BY score  SEPARATOR '%') from winfun GROUP BY classname;
复制代码
运行结果:


来源:https://www.cnblogs.com/beishanqingyun/p/17101693.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具