MySql分页结果,找到特定结果的“页面”

时间:2012-01-31 20:50:13

标签: mysql pagination

我有一个使用MySql数据库的应用程序,该数据库显示一个分页的记录列表,用户可以向其添加新的记录。我知道如何使用LIMIT等获得分页结果,但问题是如何在添加新记录时转到特定页面。如果页面大小为20,并且用户正在查看第一页,并且他们添加了第23页(比如说100)的记录,我们如何确定向用户显示哪个页面。

因此,基本上,给定页面大小和特定记录,我如何确定哪个"页面"显示页面。总页数不包括它们所属表格的所有记录,但获取它们的标准是静态的。


编辑: 我应该更具体一点。记录包含唯一的ID字段和字符串名称字段。结果记录按字母顺序排序。此外,这是一个java应用程序。

我唯一能想到的是选择按名称排序的所有所需记录,然后是一些如何在特定记录的结果中找到位置。从那个位置开始,页面编号很容易计算,因为我们知道页面大小,但我不确定它们是否是MySql语法,用于获取结果中记录的位置。

"哑巴"解决方案是将它们全部抓取然后在应用程序代码(java)中,确定所有结果中的特定记录位置。但似乎他们必须是一种更有效的方式。

1 个答案:

答案 0 :(得分:13)

SELECT COUNT(*) as CNT FROM tbl WHERE name < (SELECT name FROM tbl WHERE id = 42)

之后,您只需将CNT值除以每页的行数并将其舍入(Math.floor()

或者您甚至可以在sql中执行此操作:

SELECT FLOOR(COUNT(*) / 20) AS page_number ...