第一种写法
select * from (
      select t.*,rownum rr  from PERSONAL_INVOICE_APPLY t order by APPLY_ID DESC ) 
A where a.rr>=1 and a.rr<=4第二种写法
select * from (
       select rownum rr,A.* FROM 
              (select * from PERSONAL_INVOICE_APPLY ORDER BY APPLY_ID DESC) A
       WHERE ROWNUM <=4 
) B WHERE B.rr >=1以上两种写法有什么不同啊?

解决方案 »

  1.   

    从代码上看,目的是按照 【ORDER BY APPLY_ID DESC】这个顺序取数据。rownum 编号的规则是先给记录编号,然后才会让order by 条件生效。
    因此你的第一种写法:
      先编号之后,又排序了,这样编出的顺序就不一定是你想要的排好序的顺序。而第二种方法:
       是现将记录排好序之后再编号,这样编号的顺序就是你最终想要的了。 区别就在此了。
      

  2.   

    第一种写法:
       rownum rr在後。第二种方法:
       rownum rr在先。
      

  3.   


    我运行两个SQL语句一样啊结果