当我有20行时(id = 5 ....... id = 25) 我想从id = 4(意思是第5行,第6行和第7行)开始获得3个第一行
我以为我可以使用:
String queryStr = "FROM MyQueue x";
Query q = DbHandler.createQuery(queryStr);
q.setFirstResult(idToStart);
q.setMaxResults(maxRecords);
但是setFirstResult正在计算行数而不是id。
另一件事是使用"WHERE id > 4"
来做 - 但我怎么能保证它会占用所需的行,而不是像第17行那样的其他行......
答案 0 :(得分:0)
在SQL中,您可以使用ORDER BY
:
SELECT x.*
FROM MyQueue x
WHERE x.id >= 4
ORDER BY x.id
LIMIT 3;
ORDER BY
非常重要,如果你想保证按id值获得接下来的三行;否则结果集中的排序是不确定的(例如,它可能看似有效,然后停止工作)。您只有20行,因此性能不是问题。如果您有更多行,那么您需要id
上的索引来优化性能。