Oracle中伪列和排序一起使用遇到的问题并解决

Oracle的分页是通过rownum实现的
rownum是一个伪列,是oracle系统自动为查询返回结果的每行分配的编号,第一行为1,第二行为2,以此类推

rownum与order by同时存在的问题

当 where 后面有rownum的判断,并且存在order by时候,rownum的优先级高!

oracle会先执行rownum的判断,然后从结果中order by,很明显是错误的结果啦!就好像学校要取成绩最好的前10名同学,结果这种方法一执行,成了取出10名同学,然后按照成绩的高低排序!

解决办法就是先执行order by,然后嵌套执行rownum-----说白啦就是用()改变函数的优先级!
Oracle中伪列和排序一起使用遇到的问题并解决
先排序再添加伪列

Oracle中伪列和排序一起使用遇到的问题并解决
这个报错翻译过来是: •从关键字没有发现在预期的地方
Oracle中伪列和排序一起使用遇到的问题并解决
参考:https://blog.****.net/dragonvsdragon/article/details/7050441