最近在学习Oracle,发现了个有趣的问题,就是输出第10行到20行的数据
之前在网上看到类似top的语句 select top 3 * from user;
当时也没多想就直接在Oracle里面试了一下,发现不行。
上网查了后发现Oracle不支持top,但是有与top类似的语句支持rownum。
rownum的最直接使用就是:select * from user where rownum<4;
但是遗憾的是 select * from user where rownum<4 and rownum>2; 不能使用
解决办法:先实例化rownum
select * from(select id,row_number() over(order by id) rk from user) t where t.rk<4 andt.rk>2;
需要注意的是(select id,row_number() over(order by id) rk from user) t 这段里面需要包含自己需要的信息,例如 name之类的
就得变为(select id,name,row_number() over(order by id) rk from user) t