MYSQL教程mysql使用GROUP BY分组实现取前N条记录的方法

MYSQL教程mysql使用GROUP BY分组实现取前N条记录的方法,第1张

概述介绍《MYSQL教程mysql使用GROUP BY分组实现取前N条记录的方法》开发教程,希望对您有用。

《MysqL教程MysqL使用GROUP BY分组实现取前N条记录的方法》要点:
本文介绍了MysqL教程MysqL使用GROUP BY分组实现取前N条记录的方法,希望对您有用。如果有疑问,可以联系我们。

MysqL入门本文实例讲述了MysqL使用GROUP BY分组实现取前N条记录的方法.分享给大家供大家参考,具体如下:

MysqL入门MysqL中GROUP BY分组取前N条记录实现

MysqL入门MysqL分组,取记录

MysqL入门GROUP BY之后如何取每组的前两位下面我来讲述MysqL中GROUP BY分组取前N条记录实现方法.

MysqL入门这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~):

MysqL入门

MysqL入门结果:

MysqL入门

MysqL入门方法一:

代码如下:SELECT a.ID,a.Sname,a.ClsNo,a.score FROM aa a left JOIN aa b ON a.ClsNo=b.ClsNo AND a.score<b.score group by a.ID,a.score having count(b.ID)<2 ORDER BY a.ClsNo,a.score desc;

MysqL入门拆开分析:

MysqL入门<!--[if !supportLists]-->1、 <!--[endif]-->left JOIN aa b ON a.ClsNo=b.ClsNo AND a.score<b.score

MysqL入门同一个班级(每个班级四个人),分数比当前学生高的记录,那就意味这成绩垫底的学生,将会产生三条记录

MysqL入门<!--[if !supportLists]-->2、 <!--[endif]-->group by a.ID,a.score having count(b.ID)<2
a.ID,a.score可以代表一个学生(以学生分组),如果count(b.ID)<2(成绩超过你的人不能多于2个),那就只剩第一第二了.

MysqL入门方法二:

代码如下:SELECT * FROM aa a WHERE 2>(SELECT COUNT(*) FROM aa WHERE ClsNo=a.ClsNo and score>a.score) ORDER BY a.ClsNo,a.score DESC;
这个我觉得是比较有意思的,取每一条记录,判断同一个班级,大于当前成绩的同学是不是小于2个人.

MysqL入门方法三:

代码如下:SELECT * FROM aa WHERE ID IN (SELECT ID FROM aa WHERE ClsNo=a.ClsNo ORDER BY score DESC liMIT 2) ORDER BY a.ClsNo,a.score DESC;
这种方式进过测试不通过,ERROR 1235 (42000): This version of MysqL doesn't yet support 'liMIT & IN/ALL/ANY/SOME subquery',不能在这几个子查询中使用limit.

MysqL入门更多关于MysqL相关内容感兴趣的读者可查看本站专题:《MysqL日志 *** 作技巧大全》、《MysqL事务 *** 作技巧汇总》、《MysqL存储过程技巧大全》、《MysqL数据库锁相关技巧汇总》及《MysqL常用函数大汇总》

MysqL入门希望本文所述对大家MysqL数据库计有所帮助.

总结

以上是内存溢出为你收集整理的MYSQL教程mysql使用GROUP BY分组实现取前N条记录的方法全部内容,希望文章能够帮你解决MYSQL教程mysql使用GROUP BY分组实现取前N条记录的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/1159246.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存