首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在排序结果的编号分页中找到开始的页面?

问如何在排序结果的编号分页中找到开始的页面?
EN

Stack Overflow用户
提问于 2013-04-19 22:01:22
回答 2查看 99关注 0票数 1

/users/1是分页结果的第一页。它运行一个查询:

代码语言:javascript
复制
SELECT * FROM users ORDER BY surname, id LIMIT 0, 100;

/users/2调整生成的SQL。LIMIT 100, 100会显示第二页的分页结果等。

我想实现这些相同的分页结果的A-Z链接,当它们按姓氏排序时;基于年份的链接时,按日期排序;基于数字的链接,当按整数字段排序时。你说对了。

例如: URL /users/A将重定向到/users/1,但是我如何有效地确定/users/B应该重定向到哪个页面。

我知道/users/B只需要运行一个“过滤器”查询,就可以从页面上显示的B姓用户中剔除出来。然而,我想避免创建另一个页面,因此我想要重定向。

我还可以迭代B和其他字母开始处的SELECT surname FROM users ORDER BY surname计数的结果,并将开始位置除以每页的结果(100),但效率很低。我认为这需要一些聪明的SQL。我使用MySQL。

使用Postgres的类似问题:Pagination: Find out which page an item is on (given primary key & sorting order)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-19 22:11:58

您可以使用select count(*) from users where surname<'Current'来获取当前位置。

票数 1
EN

Stack Overflow用户

发布于 2013-04-19 22:25:46

这样如何:

代码语言:javascript
复制
select Page
from (
    select substring(Surname, 1, 1) as SurnameFirstLetter, min(page) as Page
    from (
        select Surname, ceiling((@row := @row + 1) / 100) as page
        from users, (select @row := 0) r
        order by Surname
    ) t
    group by substring(Surname, 1, 1)
) t
where SurnameFirstLetter = 'B'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16106454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档