关于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根据查询结果自动增加的, 所以永远是连续的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值