从数据库表中的第M条数据开始取N条记录:
1、Oracle
select * from
(
select rownum rw, e1.* from (select * from emp e1) where rownum <M+N
) e2 where e2.rw >= N
注:
rownum是伪列,当查询语句每查询出一条语句后,oracle就会为这条记录分配一个rownum数值.
返回记录的rownum是从1开始的,因此第一条记录的rownum数值永远是1.因此当查询出第一条记录时
rownum是1,但是条件要求rownum>1,不符合条件,继续查询下一条,因为前面本来就没有符合条件的记录
因此当查询出下一条记录后 rownum仍然是1 ,如果循环 就不会产生结果.
2、MySql
Mysql是使用limit来进行分页查询的
select * from emp limit M,N;
3、SQLServer
select top N* from (select top (M+N-1)* from emp);