oracle分页查询

错误sql分页查询语句:

          select * from users where rownum>=3 rownum <= 4;

          大家以为这样子就可以进行分页查询,但是是行不通的,不信可以试试。

          原因是:

         Oracle机制就是这样的:因为第一条数据行号为1,不符合>=3的条件,所以第一行被去掉,之前的第二行变为新的第一行(即这个行号不是写死的,可以理解为是动态的),如此下去,一直到最后一行,条件始终没法满足,所以就一条数据也查不出来。

 

         所以,我们先查在表里面虚拟存在的行号,然后再从这些行号进行筛选数据。sql语句如下:  

         select * fromselect rownum rn,u.* from users u) ua where ua.rn between 1 and 2;

         上面的sql语句是显示第1条---第2条的数据,

 

         有的人就会问,能不能使用 >=  <=来表示between ...and ...

 

         答案是:>=不能用,但是<=是可以的。别问我为什么,用就行

你可能感兴趣的:(oracle分页查询)