AI智能
改变未来

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 编辑器取的数据。不知道大家还有什么更好的意见没有。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » oracle in 子查询不能order by 的解决方案