如何在 Derby DB 的 SQL 查询中从 X 行选择到 Y 行?
例如:
- 我想选择第 15 - 30 行,而不是前 15 行。
- 选择从第 30 行开始的所有行。
我尝试了 LIMIT 和 ROWNUM 但它们不起作用。我怎样才能在德比做到这一点?
根据常见问题解答:
Derby 不支持 LIMIT 语法。但是,Derby 10.4 添加了 ROW_NUMBER 函数,而 Derby 10.7 添加了 OFFSET 和 FETCH 子句。
Derby 还支持通过 JDBC 限制查询返回的行数。
<...>从 10.4.1.3 发行版开始,Derby 还支持使用 ROW_NUMBER 函数限制行数。
<...>ROW_NUMBER 函数还可用于选择以偏移量开头的有限行数,例如:
<...>
SELECT * FROM (
SELECT ROW_NUMBER() OVER() AS rownum, myLargeTable.*
FROM myLargeTable
) AS tmp
WHERE rownum > 200000 AND rownum <= 200005;
如果您使用的是 Derby 10.7 或更新版本,您还可以使用OFFSET 和 FETCH 子句:
SELECT * FROM T ORDER BY I
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY