oracle数据库分页查询,

2025年03月24日 00:35
有3个网友回答
网友(1):

ROWNUM是伪列,只能<=,不能>=
所以需要给ROWNUM起个别名,变成逻辑列后来比较
select *
from (select rownum as num,a.* from (select * from test order by 1 asc) a) t
where t.num>=20
and t.num<=40;
你写的可以修改为:
select *
from (select ROWNUM as num,A.* from (select * from test) A where rownum <= 40)
where num >= 20;

网友(2):

你也可以用截取ID的方法
select * from test t,(select tid,rownum as num from test) b where a.tid=b.tid and b,num between 20 and 40;

网友(3):

在最外面的ROWNUM起一个别名,这样就没有问题了,你试一下。这个一定要起别名的,要不然就会出问题,至于为什么,你自己好好想想吧