我正在使用MySQL db.Records
中的 SQL限制来实现分页
从最后一行向后检索。表
中有数千条记录我希望一次检索500条记录以显示在页面中。
SELECT * FROM tbl_name ORDER BY some_col DESC
将检索所有记录。
但我不想要所有记录,因为它们的数量已经达到数千个。
如果我使用
SELECT * FROM tbl_name ORDER BY some_col DESC LIMIT 500
它将按降序返回最后500条记录。
但是我找不到一种方法来反向检索下一个500块,从第一个块已经离开的点开始。
答案 0 :(得分:2)
SELECT
<column list since I never use *>
FROM
My_Table
ORDER BY
some_column DESC
LIMIT 500, 500
编辑:关于你对罗伯特答案的评论......随着偏移变大,性能会降低,但降级明显的点通常非常大。从我在一两天前给出的关于传呼的类似问题给出的答案:
我强烈认为用户界面永远不应该允许用户使用 检索一组记录,让他们去(例如)第5000页。 对于人类的大脑而言,这太过于简单,无法找到有用的数据 一次,应该要求进一步过滤。也许让他们看看 前100页(或其他一些数字),但他们必须这样做 更好地约束结果。只是我的意见。
答案 1 :(得分:1)
答案与你的假设数字混淆,所以让我自己做:
假设我们要显示第3页,每页有10条记录。我们想要偏移20条记录(第1页和第2页的记录),然后找到10条记录。格式为:
> SELECT * FROM tbl_name ORDER BY some_col DESC LIMIT 20, 10;
换句话说,就是
LIMIT <offset>, <max results>