10

Derby DB の SQL クエリで行 X から行 Y を選択するにはどうすればよいですか?

例えば:

  • 行 15 ~ 30 を選択したいのですが、上位 15 行は選択したくありません。
  • 行番号 30 から始まるすべての行を選択します。

LIMIT と ROWNUM を試しましたが、うまくいきません。ダービーでそれを行うにはどうすればよいですか?

4

1 に答える 1

12

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 句と FETCH 句も使用できます。

SELECT * FROM T ORDER BY I 
    OFFSET 10 ROWS 
    FETCH NEXT 10 ROWS ONLY
于 2013-10-26T12:22:16.997 に答える