回答
你必須使用rownum
財產,但你必須把它應用到結果集已經下令,你需要從內部查詢(信貸鮑勃·賈維斯和丹尼爾Hilgarth傳遞:您在註釋中給出他們的解釋和鏈接以及)。它應該是這樣的:
SELECT * FROM
(SELECT b.*, rownum as row_num FROM book b ORDER by $sidx $sord)
WHERE row_num BETWEEN $start AND $start + $limit;
-1:在where子句之後應用rownum。請參閱[here](http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html)和[here](http://docs.oracle.com/cd/) B19306_01/server.102/b14200/pseudocolumns009.htm)。您的查詢將不返回任何行。 –
@DanielHilgarth你能解釋一下這個答案與[this]不同嗎?(http://stackoverflow.com/a/486513/1229023)?爲什麼[this](http://sqlfiddle.com/#!4/b3cf8/4)實際返回的是'no'行? – raina77ow
我認爲@DanielHilgarth試圖說查詢應該做一些類似於SELECT * FROM(SELECT b。*,rownum as row_num from book b order by $ sidx $ sord)where row_num between $ start和$ start + $ limit'。您需要將內部查詢生成的rownum作爲單獨的變量提取出來,以使外部查詢可見。分享並享受。 –
10克勇往直前
WITH CTE AS(SELECT b.*, Row_Number() OVER(ORDER BY SIDX,SORD) AS Rn FROM BOOK b)
SELECT *
FROM CTE
WHERE Rn BETWEEN STARTLIMIT AND ENDLIMIT
請注意提下投票的原因。提供的查詢中有任何錯誤? –
我沒有看到這個問題downvote ..? (點擊upvote和downvote箭頭之間的數字查看投票總數)。 –
我不熟悉Oracle語法,但你可以使用ROW_NUMBER()
功能排名中的行,然後選擇那些具有rank BETWEEN @start and @limit
:
SELECT *
FROM
(
select *,
ROW_NUMBER() OVER (ORDER BY ID DESC) AS rank
FROM book
)
WHERE rank BETWEEN @start AND @end
/* OR
WHERE BETWEEN ((@PageNum - 1) * @PageSize + 1)
AND (@PageNum * @PageSize)
/*
select * from(
select rownum as row_num, id from t
)
where row_num between :start and :start+:limit
- 1. 針對Oracle的SQL查詢
- 2. 針對Oracle的SQL語句
- 3. 針對提取值的Oracle sql連接
- 4. 如何針對Oracle編寫此SQL?
- 5. 針對Oracle的Table.Column的SQL Server等效值(+)=值
- 6. 針對2個參數的Oracle SQL - 1輸入
- 7. 針對Oracle的SQL性能調整許多OR vs IN()
- 8. 針對ORACLE sql查詢生成的奇怪結果
- 9. 針對Oracle的SQL Server式更改跟蹤(審覈)
- 10. COM指針結構
- 11. 的Oracle SQL配對數據
- 12. Oracle SQL where子句針對時間戳列
- 13. 針對Oracle RAW列的Hibernate映射
- 14. 針對Oracle的WCF CRUD操作示例?
- 15. Java中針對Oracle的PreparedStatement問題
- 16. 針對Oracle和PostgreSQL的節點ORM
- 17. Hibernate:針對Oracle和PostgreSQL的映射
- 18. 針對Oracle 11g的Grails序列生成
- 19. 針對Oracle數據庫的限制ConnectionTimeout
- 20. 針對CRUD操作的Oracle權限
- 21. 針對oracle長生的休眠映射
- 22. 對於每列oracle SQL
- 23. Oracle sql一對多加入
- 24. 針對Arduino的Windows命令行COM端口寫入
- 25. 是否可以針對特定的CATIA COM實例?
- 26. 如何使用C#上COM對象的指針?
- 27. 針對COM組件的別名註冊允許併發調用
- 28. modifyDataType在Liquibase針對SQL Server
- 29. 針對輸入進入Oracle數據庫的SQL注入進行消毒
- 30. Com。 C#創建類型的COM對象
StackOverflow上不一種語言翻譯服務。如果您將特定問題轉換爲Oracle,我們可以提供幫助。 –
您可能需要考慮使用頁面頂部的「搜索」框以避免後期投票和將來關閉。 FWIW,對「Oracle等價於LIMIT」這個問題的規範回答是[this question](http://stackoverflow.com/questions/470542/how-do-i-limit-the-number-of-rows-returned-通過-AN-Oracle的查詢定購後)。分享並享受。 –
非常感謝你的幫助。 RB每個人都意識到他的意圖,但更有興趣給這個人一個完美的好。再次感謝那些幫助過的人;) – zmki