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


    执行sql语句:

    select * from (

    select * from tab where ID>20 order by userID desc

    ) as a order by date desc


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

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


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

    select * from (

    select top 100 percent * from tab where ID>20 order by userID desc

    ) as a order by date desc



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

    CREATE VIEW dbo.VSortedOrders
    AS
    
    SELECT orderid, customerid
    FROM dbo.Orders
    ORDER BY orderid
    GO

     

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

    消息 1033,级别 15,状态 1,第 4 行
    
    除非另外还指定了 TOPFOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
    
    原因就是针对一个表的SELECT其实并不是返回一个表,而是一个游标。
     
    如果一定要用怎么办呢?答案就是配合TOP 100 PERCENT
    SELECT     TOP (100) PERCENT orderid, customerid
    FROM         dbo.Orders
    ORDER BY orderid, customerid DESC

    作者:a497785609 发表于2014-4-8 10:48:22 原文链接
    阅读:592 评论:0 查看评论
  • 相关阅读:
    Boliuraque OI 总结
    HNU 1447 最长上升路径
    妹纸
    某个子串的循环节
    跳石头
    小澳的葫芦
    递推式的循环问题
    BZOJ 2326 数学作业
    BZOJ 2337 XOR和路径
    hdu5468 Puzzled Elena
  • 原文地址:https://www.cnblogs.com/zhangqs008/p/3763839.html
Copyright © 2020-2023  润新知