关于rownum

使用过SQL Server或者MySql的"select top n toid, tf1, tf2 from sometable order by toid"查询方法的同学在Oracle中实现该功能也许纳闷了!
Oracle中没有"select top n ..."的用法, 那么怎么去实现该功能呢, 也许有人想到了使用"select toid, tf1, tf2 from sometable where rownum <=n order by toid "这种方式去实现。 其实这只是假命题, sometable中的rownum是物理属性, 自增的。 当sometable某些记录改变后, 这个rownum就不再连续了。
实现该功能,应该采用这样的方式"select * from (select toid,tf1,tf2 from sometable order by toid ) where rownum <=n"。 首先按照排序方式把数据罗列出来, 然后再取行号小于等于n的记录。 此时的rownum并不是物理的, 而是Oracle根据查询结果自动增加的, 所以永远是连续的。
阅读更多
文章标签: oracle sql server mysql
个人分类: 数据库
上一篇瓦良格”号会成为中国第一艘航母吗?
下一篇Word打开 总提示进入安全模式怎么办?
想对作者说点什么? 我来说一句

关于oracle的rownum

2009年08月13日 28KB 下载

没有更多推荐了,返回首页

关闭
关闭