众所周知MySQL分页比oracle分页要更简洁些: 如要查询第一条开始,共查询五条,下面代码就可以完成 String sql ="select *from book limit 1,5"; 但换成oracle分页就比较麻烦一些了。我第一次就改成了下面的代码 String sql=" select *from ( select book.*,rownum from book) where num between 1 and 6"; 可我写完后运行马上发现没有结果集了(一脸茫然),然后看到了这一段资料 oracle新手分页遗漏掉的点: rownum不能以任何基表的名称作为前缀。 子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列。 查询rownum在某区间的数据,rownum对小于某值的查询条件为true,rownum对于大于某值的查询条件直接认为是false的,但是可以间接的让它转为认为是true的。那就必须使用子查询。 好吧。。。。
改成这样既可以运行了:
String sql="
select *from (
select book.*,rownum num from book)
where num between 1 and 6";
查询完成,这样就可以得到结果集了。