为了账号安全,请及时绑定邮箱和手机立即绑定

麻烦帮忙看一下下面这个关于ORACLE ROWNUM的用法的问题,不是很理解!

麻烦帮忙看一下下面这个关于ORACLE ROWNUM的用法的问题,不是很理解!

30秒到达战场 2021-08-22 17:13:16
第一句select "tid" from temp5 where rownum=1 and "symbol"=000001 order by "tid" desc得到154是不正确的第二句select "tid" from(select rownum rn,"tid" from(select "tid" from temp5 where "symbol"=000001 order by "tid" desc))where rn=1得到554正确的。为什么?第2种写法速度太慢,是第一种的5倍,能有什么好的办法解决吗?第二种select * from (select "tid" from temp5 where "symbol"=000001 order by "tid" desc )where rownum=1第2种写法速度太慢,是第一种的10倍,能有什么好的办法解决吗?
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

select "tid" from (select "tid" from temp5 where "symbol"=000001 order by "tid" desc )
where rownum=1;
没办法,ROWNUM就是根据WHERE后面的表来的,肯定先要筛选排次序,除非你开始存的时候就是这个顺序。。
要是你tid建了索引应该很快的啊

查看完整回答
反对 回复 2021-08-30
?
湖上湖

TA贡献2003条经验 获得超2个赞

select * from (select "tid" from temp5 where "symbol"=000001 order by "tid" desc )
where rownum=1

只能这么写

查看完整回答
反对 回复 2021-08-30
  • 2 回答
  • 0 关注
  • 351 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信