oracle in 子查询不能order by 的解决方案

        oracle  in 子查询不能order by 的解决方案

今天,发现一个超级有意思的问题。查询数据库的时候试可以确定我写的语句没有问题,还找同事也看了几次。查了资料发现是ORDER BY 不能子查询。
具体是这样的:接到上级的需求,需要查最近两百数据对应的名字,
刚开始拿到需求这笔很简单,直接排序取200条,然后在IN 不就完事了。

SELECT  ID,NAME  FROM TBL_A WHERE  ID  IN (
    SELECT ID FROM (
           SELECT ID FROM TBL_B ORDER BY  CREATE_DATE DESC
    ) WHERE ROWNUM<=200 ORDER BY ROWNUM ASC  
)

可是事情就发生,有上面这个语句作死也查不出来。。。以为语句写错了。查了这种资料发现,ORDER BY 不用子查询,后来就改了一下

SELECT  ID,NAME  FROM TBL_A WHERE  ID  IN (
  SELECT ID FROM (
    SELECT ID FROM (
           SELECT ID FROM TBL_B ORDER BY  CREATE_DATE DESC
    ) WHERE ROWNUM<=200 ORDER BY ROWNUM ASC  
   ) 
)

这写法有点臭,不过总算是实现了,大家千万不要放到代码里去,我这个只是在oracle 编辑器取的数据。不知道大家还有什么更好的意见没有。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值