Oracle中的分页Rownum的使用注意事项

Oracle中的分页Rownum的使用注意事项

概念

首先介绍一下Rownum的概念:
rownum: 对于查询返回的每一行,ROWNUM伪列返回一个数字,表示Oracle从一个表或一组连接的行中选择行的顺序。选择的第一行的ROWNUM为1,第二行的为2,依此类推。(参考自Oracle®数据库SQL参考10 g第1版(10.1))

注意事项

1、Oracle使用的Rownum分页关键字不支持 >, >= ,=, between…and, 只能用以上符号(<<=!=), 也就是说在书写语句的时候只能写成类似:rownum<4的形式,
rownum在前,(<、<=、!=)在后的形式,否则会出现查不出数据的异常.
2、rownum是一个伪列,其开始的序号从1开始,而不是从0开始。

验证

下面进行实例的验证,该Oracle版本为12C。
首先teacher表中有如下几条数据:
Oracle中的分页Rownum的使用注意事项
然后使用大于号的形式进行数据查询,结果如下图所示,为查询出任何数据:
Oracle中的分页Rownum的使用注意事项
最后使用rownum在前,小于号系列在后的方法进行数据查询如下图,可以查出正确的数据:
Oracle中的分页Rownum的使用注意事项

解释

下面解释出现这种情况的原因:
因为rownum是一个伪列,是对查询出来的结果集加上去的一列行号,从1开始,
就是说,先查询出符合结果的每行结果后,就在该行另加上去的一列编号,
返回的第一行分配的是1,第二行是2,以此类推。。。
假如写的是rownum>3,那么符合条件的第一条,系统默认分配的rownum是1,则不满足rownum>3,则抛弃。继续往下查询,符合条件的结果仍然从1开始分配行号…
所以,这样永远都查不出来数据!