运行以下查询时出现错误。我认为这是正确的语法。请帮忙。为查询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
我不知道我在下面你要选择100从表中的第200行的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
的解决方案将不起作用,因为在排序之前应用了停止。
该解决方案有一个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和rownum <= 200 ORDER BY USER_ID' – Susang
rownum条件应该做什么?看看[这](http://stackoverflow.com/questions/470542/how-do-i-limit-the-number-of-rows-returned-by-an-oracle-query-after-ordering) – Aleksej
“*我认为这是正确的语法*” - 如果是这样,你不会得到语法错误 –