select * from (select  m_filmname, m_filmurl,row_number() over(order by id desc) as num
 from all_movie a where
 a.source_id=1003 order by id desc) t
where t.num =1 between 11 and 20 order by num asc这个为什么会报错??
消息 1033,级别 15,状态 1,第 3 行
除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

这个sql 在oracle里面是正确的,,,请问怎么改, ...............

解决方案 »

  1.   

    where t.num =1 between 11 and 20 order by num asc-->where t.num between 11 and 20 order by num asc
      

  2.   

    改为
    select * from (select  m_filmname, m_filmurl,row_number() over(order by id desc) as num
     from all_movie a where
     a.source_id=1003) t
    where t.num =1 between 11 and 20 
    order by num asc
      

  3.   

    select * from 
    (select  m_filmname, m_filmurl,row_number() over(order by id desc) as num
     from all_movie a where
     a.source_id=1003 ) t
    where t.num  between 11 and 20 order by num asc
      

  4.   

    select * from 

      select  m_filmname, m_filmurl,row_number() over(order by id desc) as num
      from all_movie a where a.source_id=1003
    ) t
    where t.num between 11 and 20 
    order by num asc
      

  5.   

    两处用法有误order by id desc--多了这段t.num =1
      

  6.   

    select
     * 
    from 
     (select  m_filmname, m_filmurl,row_number() over(order by id desc) as num
    from
     all_movie a 
    where
     a.source_id=1003) t
    where
     t.num =1 between 11 and 20 
    order by
     num asc
      

  7.   

    也许你们的用法 也可以,我没试,但是我 加了个 top 100 percent 就ok 了,select * from (select top 100 percent  m_filmname, m_filmurl,row_number() over(order by id desc) as num
     from all_movie a where
     a.source_id=1003 order by id desc) t
    where t.num =1 between 11 and 20 order by num asc