Sqlite 如何使用两个字段作为起点获取数据库记录的下一页?

Sqlite 如何使用两个字段作为起点获取数据库记录的下一页?,sqlite,pagination,Sqlite,Pagination,基于两列返回数据库结果时,如何分页 使用limit和offset很容易,但对于较大的数据集来说速度非常慢 如果一列搜索词保持不变,我已经看到了很多方法可以做到这一点——你只需记住另一列的最后一条记录,并在下一页显示过去的记录,如 但是,如果您使用两个不同的列进行搜索,该怎么办 例如浏览名字和姓氏,按名字排序,然后按姓氏排序: SELECT * FROM table1 ORDER BY firstname COLLATE NOCASE ASC, lastname COLLATE NOCASE AS

基于两列返回数据库结果时,如何分页

使用limit和offset很容易,但对于较大的数据集来说速度非常慢

如果一列搜索词保持不变,我已经看到了很多方法可以做到这一点——你只需记住另一列的最后一条记录,并在下一页显示过去的记录,如

但是,如果您使用两个不同的列进行搜索,该怎么办

例如浏览名字和姓氏,按名字排序,然后按姓氏排序:

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中以正确显示-以下是我从该网站获得的包装部分: