您的位置:首页 > 数据库 > Oracle

oracle rownum使用与分页

2013-11-01 23:35 351 查看
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月-8080020
SQL>

whererownum>=1是返回所有结果的(要求至少有一条结果)。
SQL>select*fromempwhererownum>=1;
EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO
-----------------------------------------------------------------------------------
7369SMITHCLERK790217-12月-8080020
7499ALLENSALESMAN769820-2月-81160030030
7521WARDSALESMAN769822-2月-81125050030
7566JONESMANAGER783902-4月-81297520
7654MARTINSALESMAN769828-9月-811250140030
7698BLAKEMANAGER783901-5月-81285030
7782CLARKMANAGER783909-6月-81245010
7788SCOTTANALYST756619-4月-87300020
7839KINGPRESIDENT17-11月-81500010
7844TURNERSALESMAN769808-9月-811500030
7876ADAMSCLERK778823-5月-87110020
7900JAMESCLERK769803-12月-8195030
7902FORDANALYST756603-12月-81300020
7934MILLERCLERK778223-1月-82130010
已选择14行。
whererownum<9是有8条结果的(要求至少有8条结果)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息