web-dev-qa-db-ja.com

LIMITを使用するとSQLコマンドが正しく終了しない

SQL Developerで以下のクエリを実行しています。

SELECT * FROM Person where person_name='rahul' order by created_time desc limit 10;

SQL Developerを実行すると、以下のエラーが表示されます。

ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:

参考までに以下のリンクを使用しました。

https://www.techonthenet.com/sql/select_limit.php

私はすでに試しました

SELECT * FROM Person where person_name='rahul' order by created_time desc OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY;

ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:
Error at Line: 1 Column: 75

OFFSETはキーワードとして扱われないことに注意してください。

8
Tushar Banne

以下のクエリを使用して問題を解決しました。

SELECT * FROM Person where person_name='rahul' and rownum between 1 and 2 order by created_time desc;
2
Tushar Banne

はい、それは、Oracleがlimit句を持たないかサポートしていないため、ORA-00933エラー。むしろ、FETCH .. OFFSETのような構成

SELECT * FROM Person 
where person_name='rahul' 
order by created_time desc 
OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;

StackOverflowには多くの同様の質問があります。同じものを検索してみるべきだった。この例: 注文後にOracleクエリによって返される行数を制限するにはどうすればよいですか?

11
Rahul

あなたが取得する場合

ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"
*Cause:    
*Action:

Oracle 12を実行していないことが原因である可能性があります。その場合、いくつかの回避策があり、すべてサブクエリとほとんどのずさんなものに関係しています。使った

select * from 
    ( select column_name, ROWNUM rnum from 
        ( select * from table_name) 
    where ROWNUM <= max_row )
where rnum  >= min_row order by column_name;
2
cyarbrough