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

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

2014-04-08 10:48 387 查看
执行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


作者:a497785609发表于2014-4-810:48:22原文链接

阅读:592评论:0查看评论
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
章节导航