25 个解决方案
#1
SELECT * FROM (
select t.*,ROWNUM r from 表 t WHERE ROWNUM <= 90)
WHERE r>80
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
select 字段名,rownum rn from tab
) where rn >= 80 and rn <= 90
#3
根据Rownum 来实现
#4
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
正解
#8
http://blog.csdn.net/AtlasHR/archive/2010/07/31/5778561.aspx
#9
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)
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
用rownum
#17
十二楼的这种做法比较耗性能!
#18
select * from (select * from tbName where rownum<90) where rownum<10
上面的rownum 能用大于和等号??
上面的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
在效率上推荐前一种
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了
测试通过版本,只要把表名修改一下就OK了
#1
SELECT * FROM (
select t.*,ROWNUM r from 表 t WHERE ROWNUM <= 90)
WHERE r>80
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
select 字段名,rownum rn from tab
) where rn >= 80 and rn <= 90
#3
根据Rownum 来实现
#4
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
正解
#8
http://blog.csdn.net/AtlasHR/archive/2010/07/31/5778561.aspx
#9
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)
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
用rownum
#17
十二楼的这种做法比较耗性能!
#18
select * from (select * from tbName where rownum<90) where rownum<10
上面的rownum 能用大于和等号??
上面的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
在效率上推荐前一种
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了
测试通过版本,只要把表名修改一下就OK了