您的位置:首页 > 数据库 > SQL

sql:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询

2016-07-08 21:17 543 查看
执行sql语句:

select*from(

select*fromtabwhereID>20orderbyuserIDdesc

)asaorderbydatedesc

逻辑上看着挺对但是报错:

除非另外还指定了TOP或FORXML,否则,ORDERBY子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

只要我们在嵌套子查询视图里面加入:top100percent即可

select*from(

selecttop100percent*fromtabwhereID>20orderbyuserIDdesc

)asaorderbydatedesc

默认情况下,如果在子查询,函数,视图中尝试去使用ORDERBY,


CREATEVIEWdbo.VSortedOrders AS SELECTorderid,customerid FROMdbo.Orders ORDERBYorderid GO


那么可能会遇到下面的错误


消息1033,级别15,状态1,第4行 除非另外还指定了TOP或FORXML,否则,ORDERBY子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

原因就是针对一个表的SELECT其实并不是返回一个表,而是一个游标。

如果一定要用怎么办呢?答案就是配合TOP100PERCENT
SELECTTOP(100)PERCENTorderid,customerid
FROMdbo.Orders
ORDERBYorderid,customeridDESC
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航