次のクエリを実行中にエラーが発生します。私はそれが正しい構文だと思う。助けてください。問合せで次のエラーが発生しましたORA-00933:SQLコマンドが正しく終了しませんでしたか?
SELECT * from TESTTABLE1 ORDER BY USER_ID WHERE rownum>=100 AND rownum<=200
次のクエリを実行中にエラーが発生します。私はそれが正しい構文だと思う。助けてください。問合せで次のエラーが発生しましたORA-00933:SQLコマンドが正しく終了しませんでしたか?
SELECT * from TESTTABLE1 ORDER BY USER_ID WHERE rownum>=100 AND rownum<=200
私は私はあなたがテーブルから200番目の行に100番目の選択したいあなたmeaning.ifを以下のよわからないんだけど、クエリステートメントが役に立つかもしれ:
select *
from (select *
from (SELECT *
from TESTTABLE1
ORDER BY USER_ID)
where rownum <= 200
ORDER BY USER_ID desc)
where rownum <= 100;
おそらく、ページネーションの問題。難しい部分は一貫した並べ替え順序を取得しています。 rownum
とorder by
のソリューションは、ソートの前に停止が適用されるため、機能しません。
この解決策は、order by
句の列が一意の組み合わせを構成することを信頼できるソートキーを生成するためにwith
句サブクエリを持っています。あなたがメインクエリの投影に列を指定する必要があります
with pages as (
SELECT t1.*
, row_number() over (ORDER BY t1.USER_ID) as rn
from TESTTABLE1 t1)
select pages.user_id
from pages
WHERE pages.rn >=100 AND pages.rn <=200
注(rn
を除外するために)、しかしselect *
が起こるのを待っているバグがあるとして、それは良い習慣です。
最後に 'ORDER BY'を置いて、' WHERE rownum> = 100 AND rownum <= 200 ORDER BY USER_ID' – Susang
を実行してください。 [this]を見てください(http://stackoverflow.com/questions/470542/how-do-i-limit-the-number-of-rows-returned-by-an-oracle-query-after-ordering) – Aleksej
"*正しい構文だと思う*" - それが文法エラーではない場合 –