rownum使用与分页
rownum说明:
rownum是个伪列,是随着结果集生成的,返回的第一行分配的是1,第二行是2等等,生成的结果是依次递加的,没有1就不会有2。注意,不返回的就不算,第一条返回的结果的rownum为1。rownum一旦生成,就不会变化了,所以要注意,指定排序时rownum就是打乱的了。rownum的比较操作我们说rownum不支持>,>=,=,betweenand,只支持<,<=等。虽说不支持,但并不会报错,只是返回的数据为空,这是因为根本不能满足这样的where条件。如whererownum>2:取回第1条数据的rownum为1,不满足,就舍弃这条记录。看下一条,然后取第2条数据的rownum还是为1,还是不满足,再舍弃。以此类推,最终舍弃了所有的数据,这就是所谓不支持的原因。于是我可以推出:whererownum=1是只有一条结果的(要求至少有一条结果)。SQL>select*fromempwhererownum=1;
EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO
-----------------------------------------------------------------------------------7369SMITHCLERK790217-12月-8080020SQL>
whererownum>=1是返回所有结果的(要求至少有一条结果)。SQL>select*fromempwhererownum>=1;EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO
-----------------------------------------------------------------------------------7369SMITHCLERK790217-12月-80800207499ALLENSALESMAN769820-2月-811600300307521WARDSALESMAN769822-2月-811250500307566JONESMANAGER783902-4月-812975207654MARTINSALESMAN769828-9月-8112501400307698BLAKEMANAGER783901-5月-812850307782CLARKMANAGER783909-6月-812450107788SCOTTANALYST756619-4月-873000207839KINGPRESIDENT17-11月-815000107844TURNERSALESMAN769808-9月-8115000307876ADAMSCLERK778823-5月-871100207900JAMESCLERK769803-12月-81950307902FORDANALYST756603-12月-813000207934MILLERCLERK778223-1月-82130010已选择14行。
whererownum<9是有8条结果的(要求至少有8条结果)。