orcale中rownum的用法 [ 光影人像 东海陈光剑 的博客 ]
在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 *
from (selet rownum as rn,t1.* from a where ...order by ...desc)
where rn >5我们从来只做一件事,分享.
让美在这个世界流转
让倍感无趣的 受伤的 彷徨的 孤独的 或是心情忧郁的 人生黯淡的人们
能有一次机会
去再一次发现这个世界的美
并把美传递给他人
---光影人像(Follow WeChat public number with interest)