group by 、concat_ws()、 group_caoncat()的使用
  9VxwdloXxqLy 2023年11月01日 140 0

group系列

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

group by

将表中的数据根据某个条件进行分组。

比如下面这张表:

image-20230208140607248

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

image-20230208141403665

通过mysql执行表格数据进行校验:

image-20230208141053673

select classname ,GROUP_CONCAT(id,name,courseName,score SEPARATOR '%') from winfun GROUP BY classname;

运行结果:

group_concat()待会再总结。

image-20230208141523725

根据group by的特性,这也是为什么通过group by进行分组后,我们对数据操作需要借助一些函数。

分组后数据变成了一行中包含多条数据,没办法在mysql中通过表格表现出来。

concat_ws()函数

caoncat_ws()函数可以把字段之间拼接起来

官网示例:

mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name');
        -> 'First name,Second name,Last Name'
mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name');
        -> 'First name,Last Name'

功能就是将字符串通过自己设定的分隔符拼接起来:

select CONCAT_WS(',,,','he','ll','o');

运行结果:

image-20230208142203901

group_concat()函数

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

通过group by分组后的数据:

image-20230208141403665

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

image-20230208142603285

group_concat()语法:

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

示例sql:

select classname ,GROUP_CONCAT(id,name,courseName,score ORDER BY score  SEPARATOR '%') from winfun 
GROUP BY classname;

group_caoncat(要拼接的数据[,要拼接的数据...] [order by column desc|asc] SEPARATOR 'string')

-- SEPARATOR 这里设置每条数据间的分割符

运行结果:

image-20230208143047602

这里我们可以和上面的concat_ws()函数一起来使用:

select classname ,GROUP_CONCAT(CONCAT_WS(' | ',id,name,courseName,score) ORDER BY score  SEPARATOR '%') from winfun GROUP BY classname;

运行结果:

image-20230208143236072

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  yThMa20bw7iV   2024年05月20日   60   0   0 MySQL
  pwciJmn0pWhj   2024年05月18日   56   0   0 MySQL
  WOljo6A3TCPl   2024年05月20日   51   0   0 MySQL
  8MfSLxyzjZA4   2024年05月20日   52   0   0 MySQL
  pwciJmn0pWhj   2024年05月17日   54   0   0 MySQL
  U6xQfOH75OE1   2024年05月17日   42   0   0 MySQL
  ijEHlwWobBkw   2024年05月17日   48   0   0 MySQL
  ijEHlwWobBkw   2024年05月17日   50   0   0 MySQL
  IS5q6TY5yQNJ   2024年05月17日   48   0   0 MySQL
9VxwdloXxqLy