mysql如何实现先排序再分组,获取第一个元素

下面说个简单列子

需求:查找出每个班级人数,以及各班年龄最大的那一位

现在有一张student表如下:

 sql:


SELECT sname,SUBSTRING_INDEX(GROUP_CONCAT(age ORDER BY age DESC),',',1) age,stu_class
FROM `student`
GROUP BY stu_class;

 这个sql用到了SUBSTRING_INDEX(str,delim,count)、GROUP_CONCAT(expr)

1、GROUP_CONCAT(expr)

意思是 拼接expr,以‘ ,’连接,可以使用这个函数进行排序

GROUP_CONCAT(age ORDER BY age DESC)这句sql得到的结果是:

SELECT GROUP_CONCAT(age ORDER BY age DESC)

FROM student

如果加上分组的话

SELECT GROUP_CONCAT(age ORDER BY age DESC) 
FROM student
GROUP BY stu_class

 

2、SUBSTRING_INDEX(str,delim,count)

意思是以delim分割str,取第count个元素

SUBSTRING_INDEX(GROUP_CONCAT(age ORDER BY age DESC),',',1)

SELECT sname,SUBSTRING_INDEX(GROUP_CONCAT(age ORDER BY age DESC),',',1) age,stu_class
FROM `student`
GROUP BY stu_class;

猜你喜欢

转载自blog.csdn.net/weixin_41637749/article/details/85114494