oracle 一个表中有100条记录这样查询表中的第80条到90条记录

时间:2022-01-16 04:33:53
oracle 一个表中有100条记录这样查询表中的第80条到90条记录

25 个解决方案

#1


SELECT * FROM (
select t.*,ROWNUM r from 表 t WHERE ROWNUM <= 90)
WHERE r>80

#2


select * from(
select 字段名,rownum rn from tab
) where rn >= 80 and rn <= 90

#3


根据Rownum 来实现

#4


引用楼主 eyelock 的回复:
oracle 一个表中有100条记录这样查询表中的第80条到90条记录


select * from (select a.*,rownum rn from tb) t where t.rn between 80 and 90

#5



select * From
(select t.*,row_number() over(order by 1) as rn From t)
where rn between  80 and 90;

#6



select * from t where rownum<=90
minus
select * from t where rownum<80

#7


引用 4 楼 wkc168 的回复:
引用楼主 eyelock 的回复:
oracle 一个表中有100条记录这样查询表中的第80条到90条记录


select * from (select a.*,rownum rn from tb) t where t.rn between 80 and 90


正解

#8


http://blog.csdn.net/AtlasHR/archive/2010/07/31/5778561.aspx

#9


引用 4 楼 wkc168 的回复:
引用楼主 eyelock 的回复:
oracle 一个表中有100条记录这样查询表中的第80条到90条记录


select * from (select a.*,rownum rn from tb) t where t.rn between 80 and 90


ok

#10



SELECT * FROM 
    (SELECT tb.*,ROW_NUMBER() OVER(ORDER BY 1) rn FROM tb)
WHERE rn >= 80 AND rn < 90;

2 4楼写法比较耗资源

#11


采用rownum: select * from(select * from (select a1.*,rownum rn from (select * from table_name) a1) where rn>80)where rn<90;
rownum一次只能用一下,不能连用两次(即不能写为:rownum>80 and rownum<90)

#12


select * from tbName where rownum<=90
minus
select * from tbName where rownum<=80

#13


支持下一楼

#14


楼主应该去百度或者谷歌去查一下,网络上这些对很多的,不用再这里浪费时间。。

#15


根据 rownum 

#16


分页查询呗
用rownum

#17


引用 12 楼 zhone 的回复:
SQL code
select * from tbName where rownum<=90
minus
select * from tbName where rownum<=80

十二楼的这种做法比较耗性能!

#18


select * from (select * from tbName where rownum<90) where rownum<10

上面的rownum 能用大于和等号??

#19


上面的我错了···

  rownum是伪列,代表已经查询到的记录的行序号。还未查到的记录是没有rownum的。   
  因此ROWNUM>=1   AND   ROWNUM<=10是可以查到前10条记录但是不能证明   
  ROWNUM>=500   AND   ROWNUM<=600可以查处500~600的501条记录。   
  ROWNUM>=1   AND   ROWNUM<=10在逻辑上相当于ROWNUM<=10   
  正确的方法是:   
  select   *   from   (select   Z_YXJK_DMDH.*,   rownum   as   rid   from   Z_YXJK_DMDH   where   rownum<=600)   where   rid   >   500   
  或者   
  select   *   from   Z_YXJK_DMDH   where   rownum<=600   
  minus   
  select   *   from   Z_YXJK_DMDH   where   rownum<=500   
  在效率上推荐前一种 

#20


select ids,name from (select rownum as ids,name from tableName ) where ids > 80 and ids < 91;

测试成功

#21


学习了
。。。。。。。。。。。

#22


select * from table where rownum<=90 minus select * from table where rownum <=80;

这个是可以的。。

#23


-- 去年8月的贴子啦,还不结贴?

#24


支持一楼。楼主结贴。

#25


select * from (select t.*,rownum rn from 表名 t) t1 where t1.rn between 80 and 90

测试通过版本,只要把表名修改一下就OK了

#1


SELECT * FROM (
select t.*,ROWNUM r from 表 t WHERE ROWNUM <= 90)
WHERE r>80

#2


select * from(
select 字段名,rownum rn from tab
) where rn >= 80 and rn <= 90

#3


根据Rownum 来实现

#4


引用楼主 eyelock 的回复:
oracle 一个表中有100条记录这样查询表中的第80条到90条记录


select * from (select a.*,rownum rn from tb) t where t.rn between 80 and 90

#5



select * From
(select t.*,row_number() over(order by 1) as rn From t)
where rn between  80 and 90;

#6



select * from t where rownum<=90
minus
select * from t where rownum<80

#7


引用 4 楼 wkc168 的回复:
引用楼主 eyelock 的回复:
oracle 一个表中有100条记录这样查询表中的第80条到90条记录


select * from (select a.*,rownum rn from tb) t where t.rn between 80 and 90


正解

#8


http://blog.csdn.net/AtlasHR/archive/2010/07/31/5778561.aspx

#9


引用 4 楼 wkc168 的回复:
引用楼主 eyelock 的回复:
oracle 一个表中有100条记录这样查询表中的第80条到90条记录


select * from (select a.*,rownum rn from tb) t where t.rn between 80 and 90


ok

#10



SELECT * FROM 
    (SELECT tb.*,ROW_NUMBER() OVER(ORDER BY 1) rn FROM tb)
WHERE rn >= 80 AND rn < 90;

2 4楼写法比较耗资源

#11


采用rownum: select * from(select * from (select a1.*,rownum rn from (select * from table_name) a1) where rn>80)where rn<90;
rownum一次只能用一下,不能连用两次(即不能写为:rownum>80 and rownum<90)

#12


select * from tbName where rownum<=90
minus
select * from tbName where rownum<=80

#13


支持下一楼

#14


楼主应该去百度或者谷歌去查一下,网络上这些对很多的,不用再这里浪费时间。。

#15


根据 rownum 

#16


分页查询呗
用rownum

#17


引用 12 楼 zhone 的回复:
SQL code
select * from tbName where rownum<=90
minus
select * from tbName where rownum<=80

十二楼的这种做法比较耗性能!

#18


select * from (select * from tbName where rownum<90) where rownum<10

上面的rownum 能用大于和等号??

#19


上面的我错了···

  rownum是伪列,代表已经查询到的记录的行序号。还未查到的记录是没有rownum的。   
  因此ROWNUM>=1   AND   ROWNUM<=10是可以查到前10条记录但是不能证明   
  ROWNUM>=500   AND   ROWNUM<=600可以查处500~600的501条记录。   
  ROWNUM>=1   AND   ROWNUM<=10在逻辑上相当于ROWNUM<=10   
  正确的方法是:   
  select   *   from   (select   Z_YXJK_DMDH.*,   rownum   as   rid   from   Z_YXJK_DMDH   where   rownum<=600)   where   rid   >   500   
  或者   
  select   *   from   Z_YXJK_DMDH   where   rownum<=600   
  minus   
  select   *   from   Z_YXJK_DMDH   where   rownum<=500   
  在效率上推荐前一种 

#20


select ids,name from (select rownum as ids,name from tableName ) where ids > 80 and ids < 91;

测试成功

#21


学习了
。。。。。。。。。。。

#22


select * from table where rownum<=90 minus select * from table where rownum <=80;

这个是可以的。。

#23


-- 去年8月的贴子啦,还不结贴?

#24


支持一楼。楼主结贴。

#25


select * from (select t.*,rownum rn from 表名 t) t1 where t1.rn between 80 and 90

测试通过版本,只要把表名修改一下就OK了