获取到的第11-15条记录
sql server:
SELECT TOP 5 * FROM 表名 WHERE ID >
(SELECT MAX(ID) FROM(SELECT TOP 10 ID FROM 表名 ORDER BY ID) AS TEMP1) --(第10条的id)
这个理解起来也简单,先把第十条记录的id找出来(当然这里面是直接使用MAX()进行查找,MIN()函数的用法也是类似的),然后再对比取比第十条记录的id大的前5条记录即为我们需要的结果 也就是11到15。
MySQL:
MySQL有个专门针对查询出一段数据的语句limit,使用起来非常的方便。
select * from t_user limit 2,3 --注意是第2条数据之后,不包含第2条数据。3代表总共查询3条记录 如果是11到15的话就是limt 10,5
Oracle:
select * from
(select rownum id ,e.* from emp e where rownum<16) e where id>10
--获取薪水从高到低排序的第5到9条记录
select * from (select rownum ro,se.* from (select * from emp order by sal desc) se)
where ro>=5 and ro <=9;
1.首先rownum是基于结果集进行编号的。。。
2.ROWNUM是一个序列,是oracle数据库从数据文件或缓冲区中读取数据的顺序。它取得第一条记录则rownum值为1,第二条为2,依次类推。如 果你用>,>=,=,between……and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除,接着取下 条,可是它的rownum还是1,又被删除,依次类推,便没有了数据。
3.列如:select se.*,rownum ro from scott.emp se where ro>5;
从emp表中,取出第一条记录,结果集中现在为空,rownum根据结果集,给它编号1,然后进行条件判断,不满足,丢掉。取出第二条记录,编号为1.。。。。
所以没有一条记录满足条件,自然查询结果为空了。。。