分段查询rownum
例如查询第1300 到1310之间9条数据
select m.* from
(select rownum as rowno,f.* from orcltable F where rownum <1310 order by f.row_id ) m where m.rowno>1300
注意(rownum易出错情况)如下:
select rownum as rowno,f.* from orcltable F where rownum >1310
若改为大于查询不出任何结果;
因为ROWNUM是对结果集加的一个伪列;不同的方式查询rownum是动态变化的;它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。
rownum 是对结果集的一个标注序号列;
rownum >10 没有记录,因为第一条不满足去掉的话,第二条的ROWNUM又成了1,所以永远没有满足条件的记录。
ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类 推。如果你用>条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除, 接着取下条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。
递归查询
start with connect by prior
SELECT o.name orgname FROM TREE T, ORGANIZATION