Derby DB SQL,从行号开始选择行

时间:2013-10-26 12:14:04

标签: sql derby

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

例如:

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

我试过LIMIT和ROWNUM不起作用,我怎么能在德比中做到?

1 个答案:

答案 0 :(得分:11)

根据 FAQ

  

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 and FETCH clauses

SELECT * FROM T ORDER BY I 
    OFFSET 10 ROWS 
    FETCH NEXT 10 ROWS ONLY