你想要的是什么效果 一般情况我是不用这样子的  只有需要的时候才会用 
select top 1  a,b from table order by c.select * from (select a,b from table order by c) where rownum<=1
这两个效果一样子的  只是多了一个  条件而已 我看是没有什么必要这么写 
太麻烦了 
这两种没什么区别  

解决方案 »

  1.   

    我是想要在oracle里取前N条,可是oracle没有top这个用法。所以我才那么用,这样写也行,但是怕会引起一些错误,所以我才这样问
      

  2.   

    select a,b from table  where rownum<=1 order by c;没必要再嵌套一层查询吧
      

  3.   

    问下哦,那这样写,是order by之后在执行rownum <=1么
      

  4.   

    就这么写,必须先order by 否则是先查出来第一条,再对第一条排序,没有意义。
      

  5.   

    两条语句的效果是一样,只不过加where rownum>=1而已,没有必要。
      

  6.   

    可以告诉SQL语句的优先级别么?是先order by在where么?
      

  7.   

    where后面的语句是从右往左的执行的,还有你这条SQL可以优化下select a,b from (select a,b from table order by c) where rownum<=1
      

  8.   

    Quote: 引用 9 楼 xiongjutao 的回复:

    where后面的语句是从右往左的执行的,还有你这条SQL可以优化下select a,b from (select a,b from table order by c) where rownum<=1[/quote
    意思是:select a,b from table  where rownum<=1 order by c
     这个语句先执行order by 再执行rownum ?
      

  9.   

    rownum是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。
      

  10.   


    select * from (select * from news_main where news_id < 3  order by news_id desc) where rownum = 1;select * from news_main where news_id < 3 and rownum = 1 order by news_id desc;
    这两句结果一样