回答
你必须使用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