10

如何在 Derby DB 的 SQL 查询中从 X 行选择到 Y 行?

例如:

  • 我想选择第 15 - 30 行,而不是前 15 行。
  • 选择从第 30 行开始的所有行。

我尝试了 LIMIT 和 ROWNUM 但它们不起作用。我怎样才能在德比做到这一点?

4

1 回答 1

12

根据常见问题解答

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
于 2013-10-26T12:22:16.997 回答