oracle的row_number() over函数的使用理解

from itlife365 begin
学习ROW_NUMBER() OVER的时候
select *,row_number() over(order by productname) as rownumber from products --上面是正确的,然后我想的是从这个结果集在取10-20之间的数据,然后我书写如下:
 select *,row_number() over(order by productname) as rownumber from 
products where rownumber between 10 and 20 --这样报错.
然后又找资料看,找不个例子.然后我照那个例子改进
 select* from (select *,row_number() over(order by productname) as rownumber from products) as temp where rownumber between 10 and 20 --这样就对了.

我想问,为什么非要在用子查询才能指定返回的范围呢?我第一种方法直接在取出来的结果集里取为什么不行呢?

因为你直接where的时候,还不能用别名。。。 order by 就可以用。 from itlife365

,这个select语句在这里是先执行from再执行where最后select..所以当执行到where的时候from出来的结果集里并没有rownumber这个东西

from itlife365 end---

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年11月    »
123
45678910
11121314151617
18192021222324
252627282930
搜索
标签列表
网站分类
最新留言
    文章归档
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.闽ICP备11018667号-2