/users/1是分页结果的第一页。它运行一个查询:
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)
发布于 2013-04-19 22:11:58
您可以使用select count(*) from users where surname<'Current'来获取当前位置。
发布于 2013-04-19 22:25:46
这样如何:
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'https://stackoverflow.com/questions/16106454
复制相似问题