oracle分页,有些看不懂

ruanwxh 2009-11-26 10:38:29

1.SELECT * ­

2. FROM (Select ROWNUM AS ROWNO, T.* ­

3. from k_task T ­

4. where Flight_date between to_date('20060501', 'yyyymmdd') and ­

5. to_date('20060731', 'yyyymmdd') ­

6. AND ROWNUM <= 20) TABLE_ALIAS ­

7.WHERE TABLE_ALIAS.ROWNO >= 10; ­


为什么第2行 rownum要用别名rowno?
第3行 k_task 也要用别名 T?
第6行也要用别名TABLE_ALIAS ?

为什么下面这样写不行:

select * from (select * from work_task where rownum<=10)
where rownum>5
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liusong_china 2009-11-26
  • 打赏
  • 举报
回复
为什么第2行 rownum要用别名rowno?
第3行 k_task 也要用别名 T?
第6行也要用别名TABLE_ALIAS ?

----------------
1、rownum要用别名rowno,是你子查询中取了前20条数据,产生了一个编号,在外面的条件中用rowno>=10来限定,(这时的rowno是在子查询中已经产生了),所以会过滤出10--20的记录。
2、k_task 也要用别名 T是为了引用方便,简单,可以不用别名。
3、这是对你的子查询起一个别名,也是为了以后引用方便,如果单独对这个子查询操作,也可以不用
liusong_china 2009-11-26
  • 打赏
  • 举报
回复
rownum是一个伪列,是一条数据产生一个编号,你这个语句
select * from (select * from work_task where rownum<=10)
where rownum>5
直接对前面的结果集取rownum>5是取不到的。。。。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧