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

第一句
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倍,能有什么好的办法解决吗?

30秒到达战场
浏览 297回答 2
2回答

哔哔one

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

湖上湖

select * from (select "tid" from temp5 where "symbol"=000001 order by "tid" desc )where rownum=1只能这么写
打开App,查看更多内容
随时随地看视频慕课网APP