基于两列返回数据库结果时,如何分页?
使用限制和偏移很容易,但对于较大的数据集来说非常慢。
如果一个列搜索词保持不变,我已经看到了很多方法 - 您只需记住另一列的最后一条记录,并在下一页显示过去,如http://www.sqlite.org/ cvstrac/wiki?p=ScrollingCursor。
但是,如果您使用两个不同的列进行搜索呢?
例如浏览名字和姓氏,按名字排序,然后是姓氏:
SELECT * FROM table1 ORDER BY firstname COLLATE NOCASE ASC, lastname COLLATE NOCASE ASC LIMIT 100
显示 100 行,最后一行可能是 Angela Smith,所以你在两个 vars 中记住这一点,然后显示下一页...
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。
查询这个的正确方法是什么?
谢谢参观