sql server中的top在oracle中如何实现

最近的一个项目是一个统计学的项目,主要是报表,图表的处理,还有一些导入导出,下载,生成PDF等的模块功能,原系统采用的是C#语言,数据库是SQL SERVER,C/S结构,如今我们改善为B/S结构的,通过访问服务器来进行网页的操作,方便也符合现在人的使用习惯。
在系统改造的过程中有一个问题,就是原SQL是使用了sql server中的top,表示取查询结果的前几条数据,然后我查了一下可以使用oracle中的虚拟列来替代top达到相同效果。就写了如下的代码:

select t.name,t.populatition 
from table t 
where rownum<=(select count(1) from table1 where yxbz='1')

测试结果不对,并没有达到和原来的效果,然后仔细的又查了一下,原来在oracle中用虚拟列代表top时,rownum不是这种用法,而是需要如下的使用:

select A.a,A.b
from(
select t.name as a,t.populatition as b
from table t
) A where A.rownum<=(select count(1) from table1 where yxbz='1')
order by rownum asc 

这样才可以达到与SQL server中top的同样效果。
总结:也就是说,如果想要在oracle中实现sql server的top用法,就需要将查询的结果集再外层包一层然后使用rownum,这样才是正确的。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值