如何在排名查询中实现分页?

     2023-03-10     127

关键词:

【中文标题】如何在排名查询中实现分页?【英文标题】:How to implement paging in ranking query? 【发布时间】:2014-03-05 06:18:32 【问题描述】:

我正在尝试使用 MySQL 进行排名。我找到了一篇关于它的好文章,没有使用自连接 (ranking without self join)。

SELECT
  score_id, student_name, score,
  @prev := @curr,
  @curr := score,
  @rank := IF(@prev = @curr, @rank, @rank+1) AS rank
FROM
  score,
  (SELECT @curr := null, @prev := null, @rank := 0) sel1
ORDER BY score DESC

关于我会有很多排名,添加分页会很好。 第一个想法是使用LIMIT,但它失败了(排名没有继续,所以它再次从一个开始)。

我不能只用限制的多个页面,因为有可能多次获得分数。

如何通过查询实现分页?

【问题讨论】:

【参考方案1】:

您可以像 LIMIT 一样通过添加外部查询来执行此操作,如下所示:

SELECT score_id, student_name, score, rank
FROM 
(SELECT
   score_id, student_name, score,
   @prev := @curr,
   @curr := score,
   @rank := IF(@prev = @curr, @rank, @rank+1) AS rank
 FROM
   score,
   (SELECT @curr := null, @prev := null, @rank := 0) sel1
 ORDER BY score DESC) AS b
WHERE rank BETWEEN 1 AND 10

然后您可以为后续页面执行BETWEEN 11 AND 20 等。可能不是最好的方法,但这是一种方法:)

【讨论】:

Doh ...我想得太复杂了,但我们会看看是否有“更好”的方法。 :) 有趣,目前还没有其他答案。所以看来你的方式是“最好的”。 :)【参考方案2】:

我找到了另一个适合我的解决方案。

我在表中添加了一个新列 rank,并使用 UPDATE 查询计算排名。

UPDATE score s, (
        SELECT
          score_id, student_name, score,
          @prev := @curr,
          @curr := score,
          @rank := IF(@prev = @curr, @rank, @rank+1) AS rank
        FROM
          score,
          (SELECT @curr := null, @prev := null, @rank := 0) sel1
        ORDER BY score DESC
    ) r
        SET s.rank = r.rank WHERE s.score_id = r.score_id

现在,很容易限制结果。

【讨论】:

如何在 SQL for MS Access 中实现分页?

】如何在SQLforMSAccess中实现分页?【英文标题】:HowdoIimplementpaginationinSQLforMSAccess?【发布时间】:2009-12-1412:25:24【问题描述】:我正在使用ASP.NET通过OdbcConnection类访问MicrosoftAccess2002数据库(MDB),虽然速度很慢,但它运行良好。我... 查看详情

如何在 SQL for MS Access 中实现分页?

】如何在SQLforMSAccess中实现分页?【英文标题】:HowdoIimplementpaginationinSQLforMSAccess?【发布时间】:2009-12-1412:25:24【问题描述】:我正在使用ASP.NET通过OdbcConnection类访问MicrosoftAccess2002数据库(MDB),虽然速度很慢,但它运行良好。我... 查看详情

如何在 Xamarin 表单中实现分页

】如何在Xamarin表单中实现分页【英文标题】:HowtoachievePaginationinXamarinforms【发布时间】:2021-12-2613:42:06【问题描述】:我需要在列表视图页面中实现分页。在这里,我在一个表中显示成百上千条记录,因此需要分页功能。由于... 查看详情

如何在nodejs + postgresql中实现分页

】如何在nodejs+postgresql中实现分页【英文标题】:Howtoimplementpaginationinnodejs+postgresql【发布时间】:2018-06-2604:23:58【问题描述】:我是Node.js的新手。我想在Node.js中使用express作为框架和Postgresql作为数据库在我的Api编写中实现分页... 查看详情

用servlet与jsp中实现分页查询

这个题目,总共分4个部分1.查询总页数,把页码显示在页面上2.把每页的内容显示在页面上3.首页,尾页,上一页,下一页4.下拉列表中的页数,(根据页数变动,选中第几页提交到第几页)详解如下:(一部分代码在servlet中,... 查看详情

如何在 dojox.datagrid 中实现分页

】如何在dojox.datagrid中实现分页【英文标题】:howtoimplementpaginationindojox.datagrid【发布时间】:2019-02-1319:37:34【问题描述】:我有一个在dojox.datagrid中显示分页的请求,我尝试搜索但没有运气。想知道dojox.datagrid中是否可以分页,... 查看详情

如何在 React 中实现分页

】如何在React中实现分页【英文标题】:HowtoimplementpaginationinReact【发布时间】:2017-03-0701:58:48【问题描述】:我是ReactJS的新手,正在其中创建一个简单的TODO应用程序。实际上,它是一个非常基本的应用程序,没有数据库连接,... 查看详情

如何在Android listview中实现分页

】如何在Androidlistview中实现分页【英文标题】:HowtoimplementpaginationinAndroidlistview【发布时间】:2013-05-1517:28:04【问题描述】:我正在为Android应用程序工作,我需要在其中显示带有项目的列表视图。但是列表视图中要显示更多元素... 查看详情

如何在 PHP 中实现分页? [关闭]

】如何在PHP中实现分页?[关闭]【英文标题】:HowdoyouimplementpaginationinPHP?[closed]【发布时间】:2010-09-2100:57:37【问题描述】:PHP中通常如何实现分页结果?我想要一个包含10个结果的结果页面。在导航中向前翻页会给我下一组和上... 查看详情

如何在 Git 标签中实现分页

】如何在Git标签中实现分页【英文标题】:HowtoachievepaginationinGittag【发布时间】:2021-11-0519:04:31【问题描述】:谁帮帮我将git标签限制为100需要在第一次获取时获取前100个标签需要传递一些key或token来获取下一批可以像分页一样... 查看详情

如何在 Spring MVC 3 中实现分页 [关闭]

】如何在SpringMVC3中实现分页[关闭]【英文标题】:HowtoimplementpaginationinSpringMVC3[closed]【发布时间】:2011-01-1517:54:46【问题描述】:是否有任何开箱即用、易于实现的标准分页组件/标签库或代码示例可用于SpringMVC中的分页?【问题... 查看详情

如何使用hibernate在spring boot中实现分页

】如何使用hibernate在springboot中实现分页【英文标题】:Howtoimplementpaginationinspringbootwithhibernate【发布时间】:2015-12-0217:41:44【问题描述】:我正在使用带有休眠功能的SpringBoot,并且我想在我的项目中使用分页。我在谷歌上搜索并... 查看详情

在ssh项目中实现分页效果

...我使用的是数据库下面的User表,实现的效果是通过分页查询能够将表中的数据分页显示,点击相关的按钮实现:首页、上一页、下一页、末页的显示1新建一个dynamicwebproject项目,导入SSH项目所需要的jarantlr-2.7.7.jar c3p0-0.9.5.2.jar cl... 查看详情

在 ASP.NET Core 2.1 Web API 中实现分页

...905:28:50【问题描述】:我搜索了,但并没有真正找到关于如何在ASP.NETWebAPICore2.1应用程序中实现分页逻辑的文章...我有以下[Route("api/[controller]")][ApiController][EnableCors( 查看详情

在mongodb中实现分页

】在mongodb中实现分页【英文标题】:Implementingpaginationinmongodb【发布时间】:2015-03-2204:52:34【问题描述】:我知道使用skip来实现分页是一种不好的做法,因为当您的数据变大时skip开始消耗大量内存。解决此问题的一种方法是使... 查看详情

java示例代码_在Spring MVC 3中实现分页

java示例代码_在Spring MVC 3中实现分页 查看详情

使用 scrollViewDidScroll 方法在 UITableView 中实现分页?

】使用scrollViewDidScroll方法在UITableView中实现分页?【英文标题】:ImplementingpaginationinUITableViewwithscrollViewDidScrollmethod?【发布时间】:2014-09-1714:59:06【问题描述】:我正在构建一个文章阅读应用程序。我正在使用AFNetworking第三方库... 查看详情

在存储库级别在 Doctrine2 ORM 中实现分页的最佳实践

】在存储库级别在Doctrine2ORM中实现分页的最佳实践【英文标题】:BestpracticesofimplementingpaginationinDoctrine2ORMonrepositorylevel【发布时间】:2013-08-1909:03:07【问题描述】:我知道Doctrine\'sPaginator,但它适用于DQL级别。我正在寻找的是一... 查看详情