SQL 使用 LIMIT 时命令未正确结束

SQL command not properly ended when using LIMIT

我正在 SQL Developer 中执行以下查询。

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

当我执行它时,SQL 开发人员给我以下错误。

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

我用下面的link作为参考。

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 不被视为关键字。

是的,那是因为 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;

Whosebug 中有很多类似的问题。应该尝试搜索相同的内容。例如这个:How do I limit the number of rows returned by an Oracle query after ordering?

我已经使用以下查询解决了这个问题。

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

如果你得到

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;