Sqlite 如何使用两个字段作为起点获取数据库记录的下一页?
基于两列返回数据库结果时,如何分页 使用limit和offset很容易,但对于较大的数据集来说速度非常慢 如果一列搜索词保持不变,我已经看到了很多方法可以做到这一点——你只需记住另一列的最后一条记录,并在下一页显示过去的记录,如 但是,如果您使用两个不同的列进行搜索,该怎么办 例如浏览名字和姓氏,按名字排序,然后按姓氏排序:Sqlite 如何使用两个字段作为起点获取数据库记录的下一页?,sqlite,pagination,Sqlite,Pagination,基于两列返回数据库结果时,如何分页 使用limit和offset很容易,但对于较大的数据集来说速度非常慢 如果一列搜索词保持不变,我已经看到了很多方法可以做到这一点——你只需记住另一列的最后一条记录,并在下一页显示过去的记录,如 但是,如果您使用两个不同的列进行搜索,该怎么办 例如浏览名字和姓氏,按名字排序,然后按姓氏排序: SELECT * FROM table1 ORDER BY firstname COLLATE NOCASE ASC, lastname COLLATE NOCASE AS
SELECT * FROM table1 ORDER BY firstname COLLATE NOCASE ASC, lastname COLLATE NOCASE ASC LIMIT 100
显示100行,最后一行可能是Angela Smith,所以您可以在两个变量中记住这一点,然后显示下一页
SELECT * FROM table1 WHERE firstname>="Angela" COLLATE NOCASE AND lastname>"Smith" COLLATE NOCASE ORDER BY firstname COLLATE NOCASE ASC, lastname COLLATE NOCASE ASC LIMIT 100
当名字是Angela时,这对于显示其余的名字是正确的,但是,在Angela来到Aria之后,只会显示姓>Smith的Aria
问这个问题的正确方法是什么
感谢您查看当先按名字再按姓氏排序时,名称的顺序如下:
Angela Smith <-- last record
Angela Zwick
Aria Aames
Aria Smith
Aria Zucker
WHERE (firstname = 'Angela' AND lastname > 'Smith')
OR firstname > 'Angela'
谢谢你,CL。我想出了另一个解决方案,但你的更简单、更优雅。它插得很好。我现在想知道是否有一个标准的方法,当向后分页时,即使>符号成为无终止符,我想我已经找到了。我必须将我的查询顺序更改为DESC,以便它选择正确的行,然后将其包装在ASC中以正确显示-以下是我从该网站获得的包装部分: