mysql - 使用 LIMIT 对 MySQL 查询中的结果进行分页

标签 mysql pagination limit

我想一次获取一个“页面”的结果;我希望页码成为一个参数(在 JDBC 准备语句中)。考虑以下片段

SELECT * FROM thread t ORDER BY t.id LIMIT ((? - 1) * 20), 20

理想情况下,对于第 1 页,这将导致 LIMIT 0, 20

当我测试

SELECT * FROM thread t ORDER BY t.id LIMIT ((1 - 1) * 20), 20

我被告知我有一个语法错误。不过,我不明白它可能是什么——这只是一些简单的数学运算。它告诉我的只是

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '((1 - 1) * 20), 20' at line 1

我的 LIMIT 子句有什么问题,我该如何解决?

最佳答案

这是不可能的。

请看这里的解决方案: MySQL Math and COUNT(*) in LIMIT

我建议使用 javascript 或其他东西来处理第一个参数(即偏移量),例如: 第一页上的 limit 0,20 和第二页上的 limit 21,20...

例如,如果您的第一个页面在 url www.example.com?page=1 中有一个 get 变量

offset = (page - 1)*20 ;
row_count = 20;
select * from table limit (offset, row_count);

关于mysql - 使用 LIMIT 对 MySQL 查询中的结果进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11728704/

相关文章:

mysql - phpMyadmin 查询执行时间

php - 管理员搜索查询

android - 如何使用 Intent 限制录音时间?

mysql - 按 Count(field) 排序,但所有行都在答案中

JavaScript 删除前用 PHP/MYSQL 确认

javascript - Meteor 全页面刷新加载更多按钮(iron-router)

google-app-engine - 使用 Google App Engine 的分页技术

wordpress - 定义了特定 post_type 的帖子内的页面导航在 Wordpress 中不起作用

php - 限制偏移量大于实际记录的mysql select语句

mongodb - mongo DB集合、文档和数据库的大小限制