下面说个简单列子
需求:查找出每个班级人数,以及各班年龄最大的那一位
现在有一张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;