如何检索查询结果的第n行?
row_id(或任何索引)对我的情况不起作用,因为表包含带数字的列。根据一些数据,查询需要未排序的数据或按asc / desc标准排序。
但我可能需要快速检索,比如第2行和第2行。 5个结果。
所以除了现在用计数器实现sqlite3_step()== SQLITE_ROW之外,我不知道如何继续这个。
由于性能问题,我不太喜欢这个解决方案。所以,如果有人可以提出一个非常感激的提示。
此致 大卫
答案 0 :(得分:22)
将LIMIT 1
和OFFSET <n>
添加到查询中
示例SELECT * FROM users LIMIT 1 OFFSET 5132;
答案 1 :(得分:0)
一般方法是,如果您只想要m行的第n行,请使用适当的where
条件来获取那个行。
如果您需要连续但不能,因为没有where
条件可以帮助您,那么您的数据库存在严重的设计问题。它失败了first normal form,它指出“行没有从上到下排序。”
答案 2 :(得分:0)
但是我可能需要快速检索结果的第2行和第5行。
在需要非连续行的情况下,可以使用ROW_NUMBER()
:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER() AS rn --OVER(ORDER BY ...) --if specific order is required
FROM t
)
SELECT c
FROM cte
WHERE rn IN (2,5); -- row nums