+ -
当前位置:首页 → 问答吧 → sql server 这条sql为什么报错?

sql server 这条sql为什么报错?

时间:2011-11-27

来源:互联网

SQL code

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里面是正确的,,,请问怎么改, ...............

作者: imsasuke   发布时间: 2011-11-27

楼主是在视图里用?

作者: roy_88   发布时间: 2011-11-27

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

-->

where t.num between 11 and 20 order by num asc



作者: dawugui   发布时间: 2011-11-27

改为
SQL code
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

作者: roy_88   发布时间: 2011-11-27

SQL code
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

作者: roy_88   发布时间: 2011-11-27

SQL code
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

作者: dawugui   发布时间: 2011-11-27

SQL code
两处用法有误

order by id desc--多了这段

t.num =1

作者: roy_88   发布时间: 2011-11-27

SQL code
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

作者: fredrickhu   发布时间: 2011-11-27

也许你们的用法 也可以,我没试,但是我 加了个 top 100 percent 就ok 了,
SQL code

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


作者: imsasuke   发布时间: 2011-11-27

大牛的方法要试试的~

作者: hllfl   发布时间: 2011-11-27