获取查询ORA-00933的以下错误:SQL命令未正确结束?

获取查询ORA-00933的以下错误:SQL命令未正确结束?,sql,oracle,jdbc,Sql,Oracle,Jdbc,运行以下查询时出现错误。我认为这是正确的语法。请帮忙 SELECT * from TESTTABLE1 ORDER BY USER_ID WHERE rownum>=100 AND rownum<=200 我不确定我是否理解您的意思。如果要从表中选择第100到200行,查询语句可能会有所帮助: select * from (select * from (SELECT * from TESTTABLE1 ORDER BY USER_ID)

运行以下查询时出现错误。我认为这是正确的语法。请帮忙

SELECT * from TESTTABLE1 ORDER BY USER_ID WHERE rownum>=100 AND rownum<=200

我不确定我是否理解您的意思。如果要从表中选择第100到200行,查询语句可能会有所帮助:

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的解决方案将不起作用,因为停止是在排序之前应用的

这个解决方案有一个with子句子查询来生成一个排序键,如果order by子句中的列构成唯一的组合,那么这个排序键是可靠的

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*是一个等待发生的错误。

您应该在最后下订单,在rownum>=100和rownum的情况下尝试此操作,rownum条件应该做什么?看一看,我认为这是正确的语法-如果是,你不会得到语法错误你尝试了什么查询?你犯了什么错误?请把你从那个答案中得到的问题和它给出的错误贴出来you@Aleksej但是,我看到了另一个答案,从中进行的查询也不起作用,并抛出了相同的错误:SELECT*from TESTTABLE1 ORDER BY USER_ID OFFSET 0 ROWS ONLY FETCH NEXT 100 ROWS ROWNUM和ORDER BY不按您希望的方式一起播放。另外,这不总是返回前100行吗?我使用'desc'获取第二个100行。因此,您可以颠倒返回结果集的顺序。实际上,您需要另一个外部查询来按用户\u ID ASC排序,以便以正确的顺序返回结果。这有很多种。使用ROWNUM以外的东西不是更容易吗?