在sql中我们用top关键字来显示查询结果中的前n条记录,orcale中取消了top,那么怎么实现这个功能呢?
oracle 里面在创建表的时候默认会+一个rowid/rownum字段进去,使用rownum可以用来限制返回数据的行数,比如要返回结果集中的前10条数据,那么sql语句可以这样写:select * from 表名 where rownum<11
因为rownum是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。
强调一下,这个结果集是select后加上where条件所得到的结果集,不包括用order by排序,所以如果你想对排序后的结果使用rownum的话,应该使用嵌套查询,先把rownum生成,再对它进行查询:
select * "^9d:w G9L%SGU Z.L0from (selet rownum as rn,t1.* from a where ...order by ...desc)
W eM0Ak0where rn >5