分页查询,例如:每页10行,求第3页的数据
解题思路:
- 求第3页的数据即:过滤掉前2页的数据,在剩下的的数据中取前10行
- 过滤——not in;前2页——top(2*10)
- 剩下数据取前10行——top 10
- 利用子查询
知道了思路,以下就是在SQL server数据库和Oracle数据中具体实现方法
1.SQL server数据库中
select top 10 * from student where id not in (select top 20 id from student)
2.Oracle数据库中
select * from (select rownum s,empno from emp) t where t.s between 21 and 30
实现分页已经是一个十分普遍的要求,因此根据以上例子,我们可以推出一个公式:
1.SQL server数据库中
select top size * from 表名 where 唯一键 not in (select top size*(i-1) 唯一键 from 表名)
2.Oracle中
select * from(select rownum s,empno from emp) t where t.s between (i-1)*size+1 and i*size
size(每页多少行) ;i(当前页)