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
ASSELECT orderid, customerid
FROM dbo.Orders
ORDER BY orderid

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

消息 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

select  top (100) PERCENT意思是返回符合条件所有的记录,select top 100就是返回前一百条符合条件的记录

实例:

 StringBuilder sb = new StringBuilder();StringBuilder count = new StringBuilder();sb.Append("select top (100) PERCENT a.*  from 视图_列表 a   where 1=1 ");if (!string.IsNullOrEmpty(机构名称) && 机构名称 != "null"){sb.Append("and a.机构编码 in (" + 机构名称 + ") ");}if (!string.IsNullOrEmpty(日期起) && 日期起 != "null"){sb.Append(" and a.日期 >= '" + 日期起 + "' ");}if (!string.IsNullOrEmpty(日期止) && 日期止 != "null"){sb.Append(" and a.日期<='" + 日期止 + "' ");}string strsql = sb.ToString();string rowsql = "select * from ( Select top " + 数量 + " * from (" + strsql + ") as b where b.编号 not in(select top " + 索引 + " c.编号 from(" + strsql + ") as c  order by 排序 desc ) order by 排序 desc ) as t  ";

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

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

    执行sql语句: select * from ( select * from tab where ID>20 order by userID desc ) as a order by date ...

  2. 【已解决】除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图...

    1.SQL报错如下图: 2.原因:针对一个表的SELECT其实并不是返回一个表,而是一个游标. 解决方案:在子查询配合TOP 100 PERCENT用,如下图: 注意:因为是全部查询,所以会显示全部数 ...

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

    原始: SELECT * from ( SELECT * from test order by id desc) a 解决办法: SELECT * from ( SELECT Top 100 Perc ...

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

    问题:当子查询内存在ORDER BY 字句时查询会报错 SQL: SELECT * FROM ( SELECT * FROM USER ORDER BY USER_CORD ) S. 解决办法:在子查 ...

  5. (解决)除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效Mybatis-plus 默认分页功能报错

    (解决)除非另外还指定了 TOP.OFFSET 或 FOR XML,否则,ORDER BY 子句在视图.内联函数.派生表.子查询和公用表表达式中无效Mybatis-plus 默认分页功能报错 我百度了 ...

  6. SQL 数据查询(5)—— 集合查询、基于派生表的查询、数据更新、视图

    文章目录 集合查询 基于派生表的查询 数据更新 插入数据 插入元组 插入子查询的结果 修改数据 删除数据 删除一个元组的值 删除多个元组的值 空值的处理 空值的产生 空值的算术运算.比较运算和逻辑运算 ...

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

    问题:使用sql查询时报错 SELECT* FROM(SELECTa.value2,a.value3,a.value4,a.hospitalization_idFROMv_treatment_proc ...

  8. mycat 分表子查询_还不懂MyCat?一文带你深入剖析,实现MySQL读写分离

    前言 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Myca ...

  9. mysql 单表 子查询_MySQL基本SQL语句之单表查询、多表查询和子查询 | 旺旺知识库...

    一.简单查询: 基本语法: SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * F ...

  10. mysql 单表子查询语句_MySQL基本SQL查询语句:多表查询和子查询示例

    一.简单查询:基本语法: 代码如下 SELECT * FROM tb_name; 查询全部 代码如下 SELECT field1,field2 FROM tb_name; 投影 代码如下 SELECT ...

最新文章

  1. python 列表生成式、lower()和upper()的使用
  2. 自律到极致-人生才精致「第7期」:领奖通知
  3. Java中获取数据库中两个时间的相差秒数
  4. Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)。
  5. 同一个页面生成多个sessionid_web页面渲染(一)
  6. html类名定义规则_HTML入门笔记1
  7. Python Django之GET请求和POST请求及响应处理
  8. nginx安装与项目发布
  9. kafka 同步提交 异步_Kafka 位移提交那些事儿
  10. XMLHttpRequest的属性
  11. 创造新世界--全国模拟(二)
  12. 中国与外国互免签证协定一览表(更新至2022年7月8日)
  13. 如何提高自身代码能力
  14. c语言哑铃,使用一副哑铃,做好8个动作,就能练遍全身肌肉
  15. 下载并解密的ts文件,发现一部分ts文件能播放,一部分不能播放
  16. Python同步学习(一)
  17. matlab-基础 逻辑运算符 不等于
  18. 说说background-size:cover;与background-size:contain的区别
  19. 10款响应式自适应网站模板(二)
  20. 智能电销机器人为什么会被更多企业所青睐

热门文章

  1. Linux设备驱动程序(LDD)中snull的编译问题
  2. centos7恢复mysql数据库_centos7 mysql数据库的安装与使用
  3. SLAM学习笔记-------------(二)初识SLAM
  4. adlicensegen怎么生成许可_国家排污许可证申请系统常见问题及解决办法
  5. 关闭后天 树莓派_树莓派|如何打开和关闭树莓派(绝对新手)
  6. 隐式差分matlab程序,油藏数值模拟隐式差分MATLAB源程序
  7. python中三元_Python三元运算和Python函数介绍
  8. mysql注入多语句执行_MySQL注入总结MySQL暴错注入方法整理
  9. 佐客牛排机器人餐厅_3分钟出餐!全球首家机器人餐厅开业
  10. mysql 字节 字符_字符与字节 | 字痕随行