• 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 行
    
    除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
    
    原因就是针对一个表的SELECT其实并不是返回一个表,而是一个游标。
     
    如果一定要用怎么办呢?答案就是配合TOP 100 PERCENT
    SELECT     TOP (100) PERCENT orderid, customerid
    FROM         dbo.Orders
    ORDER BY orderid, customerid DESC
  • 相关阅读:
    Python的容器类型的遍历汇总
    python学习0313作业
    Python的字符编码
    hadoop-sqoop学习笔记
    eclipse Git & maven 安装
    使用mongoperf评估磁盘随机IO性能
    限制mongodb内存占用过高方法
    rabbitmq集群安装
    Perfmon
    mongodb所在目录空间不足解决方法
  • 原文地址:https://www.cnblogs.com/firstdream/p/5654617.html
Copyright © 2020-2023  润新知