mysqltopn问题怎么解决

本篇内容介绍了“MySQL top n问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

成都创新互联专注于企业成都全网营销推广、网站重做改版、辽源网站定制设计、自适应品牌网站建设、HTML5建站购物商城网站建设、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为辽源等各大城市提供网站开发制作服务。

日常工作中,经常要查询分组的前几名或查询数据的前几条记录(第5条到第十条)等。

  TOP-N分析法就是通过TOP-N算法从研究对象中得到所需的N个数据,并从排序列表中选取最大或最小的N个数据,这就是一个TOP-N算法。

mysql中用limit;oracle中用rownum。

mysql中没有top ,
你想查前几条数据 要用排序方试来查 
order by id desc limit 0,10 按照id的倒序排序 取出前10条
order by id limit 5,10 按照id的正序排序 从第5条开始取10条

从mysql到oracle迁移一个程序,遇到了sql语句中的limit问题。

查遍网络,所提供的方法都极其麻烦,不利于通用。

以下是我的解决方案,可以与limit媲美。

比如从一个mobileuser 用户表中查询2到6条记录,按照第一次使用时间排序。

mysql语句为:

SELECT userid,password,firstusetime from mobileuser ORDER BY firstusetime DESC limit 2,6;

oracle语句为:

SELECT * FROM ( SELECT userid,password,firstusetime, RANK() OVER (ORDER BY firstusetime DESC ) RN   FROM mobileuser ) WHERE RN between 2 and 6;

rank() over 函数代表排行依据,整个sql语句就是从根据“ORDER BY firstusetime DESC”这个标准,找到排行2到6位的数据。

但是存在一个问题,根据排行依据,有些数据是并列的,这样返回的数据条数就会多于我们期望的。这时我们加一个rownum限制就行了。

SELECT * FROM ( SELECT userid,password,firstusetime, RANK() OVER (ORDER BY firstusetime DESC ) RN   FROM mobileuser ) WHERE RN between 2 and 6 and rownum<=5;

“mysql top n问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!

标题名称:mysqltopn问题怎么解决
网址分享:https://www.cdcxhl.com/article36/gssjsg.html

成都网站建设公司_创新互联,为您提供网页设计公司微信小程序面包屑导航品牌网站设计标签优化关键词优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站建设网站维护公司