mysql中的group_concat()函数的参数排序

1.用法:mysql group_concat()函数的参数是可以直接使用order by排序的。
2.例子表中数据如下:

id  username  score

1    张三    90
2    李四    85
3    王五    80
4    张三    70
5    李四    80
6    张三    60

 

需求如下:

我们要查看每个人的片【多个】分数,将该人对应的【多个分数显示在一起】,分数要【从高到底】排序

关键字分析可知:

【多个分数显示在一起】: 必然用到组合【或者说拼接】在一起【当然后端通过代码也可以实现【如:php code】,不过会多些代码】,性能上,还需要另外结合具体情况确定】即关键字concat

【每个人】:则需要用分组,即用到group by

【如果熟悉mysql,就会想到使用group_concat(),如果不熟悉,也请记住,mysql作为这么流行的开源框架,你能想到功能,基本都实现了,而且mysql考虑到了几乎所有的开发者需求,所以去查文档,Google,或者直接百度,总会有提示,然后去实践验证即可】

【从高到底排序】:order by  desc 【默认排序规则就是你能想到的排序的规则,如果结果不是,再去确认】

 

sql语句:

select username, GROUP_CONCAT(score ORDER BY score desc) as myScore from score GROUP BY username;

 

查询的结果如下:

username myScore

张三    90,70,60    //可以看到多个分数在一起,按照指定的分组【即username】,同时排序多个分数,从左往右按照从高到死排序
李四    85,80
王五    80

原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/12168040.html

时间: 2024-11-29 10:10:46

mysql中的group_concat()函数的参数排序的相关文章

Mysql中关于 group_concat函数详解

group_concat()主要功能:能将相同的行组合起来 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 Sql代码   select * from aa; +------+------+| id| name |+------+------+|1 | 10||1 | 20||1 | 20||2 | 20||3 | 200 ||3 | 500 |+------+---

mysql中的group_concat函数的用法

1 本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . 2 MySQL中group_concat函数 3 完整的语法如下: 4 group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 5 基本查询 6 mysql> select * from aa; 7 +------+------+ 8 | id| name | 9 +-

SQLServer 中实现类似MySQL中的group_concat函数的功能

SQLServer中没有MySQL中的group_concat函数,可以把分组的数据连接在一起. 后在网上查找,找到了可以实现此功能的方法,特此记录下. SELECT a, stuff((SELECT ',' + b FROM #tb WHERE a = t.a FOR xml path('')), 1, 1, '' )AS b from  # tb AS t GROUP BY a; 先对a列进行分组,对分组中的b以Xml形式输出,再使用stuff将开关多出的,删掉. 具体实现参考:http:/

MySQL中使用group_concat()函数数据被截取(有默认长度限制),谨慎!

最近在工作中遇到一个问题: 我们系统的一些逻辑处理是用存储过程实现的,但是有一天客服反馈说订单下单失败,查了下单牵扯到的产品基础资源,没有问题. 下单的存储过程中有这样两句代码: 1 declare _err int default 0; 2 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1; 3 DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' set _

MySQL中使用group_concat()函数数据字符过长报错的问题解决方法

最近在办公软件项目,在开发权限指标遇到一个问题:我们系统的一些逻辑处理是用存储过程实现的,但是有一天客户反馈说权限指标分配报错,查了分配的权限数据牵扯到的数据权限基础资源,没有问题.权限指标分配的存储过程中有这样两句代码: SET @tests = '';SELECTGROUP_CONCAT( DISTINCT REPLACE ( concat( '''', ( indicator_content ), '''' ), ',', ''',''' ))AS Allnumber INTO @test

MySQL中的group_concat函数

group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 以cat_id分组,把name字段的值打印在一行,逗号分隔(默认) 修改分隔符 去冗余 排序

Mysql中常用的函数汇总

Mysql中常用的函数汇总: 一.数学函数abs(x) 返回x的绝对值bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制)ceiling(x) 返回大于x的最小整数值exp(x) 返回值e(自然对数的底)的x次方floor(x) 返回小于x的最大整数值greatest(x1,x2,...,xn)返回集合中最大的值least(x1,x2,...,xn) 返回集合中最小的值ln(x) 返回x的自然对数log(x,y)返回x的以y为底的对数mod(x,y) 返回x/y的模(余数)pi(

mysql中的ifnull()函数判断空值

我们知道,在不同的数据库引擎中,内置函数的实现.命名都是存在差异的,如果经常切换使用这几个数据库引擎的话,很容易会将这些函数弄混淆. 比如说判断空值的函数,在Oracle中是NVL()函数.NVL2()函数,在SQL Server中是ISNULL()函数,这些函数都包含了当值为空值的时候将返回值替换成另一个值的第二参数. 但是在MySQL中,ISNULL()函数仅仅是用于判断空值的,接受一个参数并返回一个布尔值,不提供当值为空值的时候将返回值替换成另一个值的第二参数. SELECT ISNULL

Mysql中使用find_in_set函数查找字符串

mysql有个表的字段的存储是以逗号分隔的,如domain字段login.s01.yy.com,s01.yy.com,s02.yy.com.现在要查找s01.yy.com这个.我们用like查找好像不是非常准确.那就试试mysql中的find_in_set函数吧. SELECT find_in_set('a','a,b,c,d') as test