運行以下查詢時出現錯誤。我認爲這是正確的語法。請幫忙。爲查詢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
「*我認爲這是正確的語法*」 - 如果是這樣,你不會得到語法錯誤 –