错误sql分页查询语句:
select * from users where rownum>=3 rownum <= 4;
大家以为这样子就可以进行分页查询,但是是行不通的,不信可以试试。
原因是:
Oracle机制就是这样的:因为第一条数据行号为1,不符合>=3的条件,所以第一行被去掉,之前的第二行变为新的第一行(即这个行号不是写死的,可以理解为是动态的),如此下去,一直到最后一行,条件始终没法满足,所以就一条数据也查不出来。
所以,我们先查在表里面虚拟存在的行号,然后再从这些行号进行筛选数据。sql语句如下:
select * from( select rownum rn,u.* from users u) ua where ua.rn between 1 and 2;
上面的sql语句是显示第1条---第2条的数据,
有的人就会问,能不能使用 >= <=来表示between ...and ...
答案是:>=不能用,但是<=是可以的。别问我为什么,用就行