因此,为了保持简洁,我需要在行x和y之间获取数据库中的所有信息。现在我有一个globalId列自动递增,但是,当我从数据库中删除一行(我将要做的)时,插入的下一个数据将按照预期删除数据的globalId +1。这会产生一个问题,因为我不能简单地使用我的x和y值之间的for循环进行迭代,并获得globalId = i的所有数据点。如果我可以获得该行的索引,那么,它将不会有过去已删除的行的间隙。我已经尝试了很多方法来获取行索引,但似乎没有任何工作。
我正在使用Java,因此如果有帮助,我会从查询中返回一个ResultSet。
答案 0 :(得分:1)
这是一个独立于平台的解决方案:
String sqlQuery = "SELECT .... FROM ... ORDER BY global_id ASC";
ResultSet rs = runQuery(sqlQuery); // a made-up method to hide the details
final int x = 10;
final int y = 20;
int i = 0;
while (i < x && rs.next()) {
i++;
}
while (i < y && rs.next()) {
// retrieve record
i++;
}
那么我们在这做什么?
nth
项 - 无论id序列中的漏洞如何
while
循环转到窗口的开头while
循环遍历您需要的确切记录。你可以处理它们。或者,您可以使用limit-offset,如here所述:
SELECT .... FROM ... ORDER BY global_id ASC LIMIT 20 OFFSET 10
关于偏移的警告:虽然它看起来很优雅,但它有自己的怪癖。一些专家建议not to use it。