开发者社区> 清山> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
T-SQL查询:语句执行顺序
原文:T-SQL查询:语句执行顺序 读书笔记:《Microsoft SQL Server 2008技术内幕:T-SQL查询》   ===============  T-SQL查询的执行顺序 ===============      =============== T-SQL查询的示意图...
792 0
[20130628]sql语句显示不全的问题.txt
[20130628]sql语句显示不全的问题.txt 今天在优化一条sql语句的时候遇到一个怪问题,sql语句显示有问题,仔细查看才想起来以前看itpub的一本书上讲过,老杨遇到的问题,语句里面仅仅含有0d(十六进制)编码,自己为了加深印象,做一个测试例子:SQ...
815 0
bboss持久层sqlname对应的sql语句在对应的xml文件中不存在时报的简单而直观的提示
bboss持久层sqlname对应的sql语句在对应的xml文件中不存在时报的简单而直观的提示,请看图
498 0
DeDecms变量覆盖之SQL语句分析报告+修复方案
信息安全交流论坛 BBS.ITSEC.PW 作者:y0umer DEDECMS变量覆盖漏洞分析 昨天暗月凌晨找我搞基.他分析了此漏洞.所以才有得此文. DEDECMS为什么那么多变量覆盖呢? 是因为程序员懒啊! 我也不去批评程序员了.
1041 0
RMAN 提示符下执行SQL语句
       在手动恢复数据库时,有时候需要在SQL*Plus提示符以及操作系统提示符,RMAN提示符下来回切换显得有些繁琐。实际上RMAN为我们提供了命令行下执行一些简单的SQL语句以及PL/SQL的方法,以避免上述情形。
1036 0
Oracle 历史SQL语句执行计划的对比与分析
    基于CBO优化器的环境中,SQL执行计划的生成依赖于统计信息的真实与完整。如列的离散度,列上的直方图,索引的可用性,索引上的聚簇因子。当这些信息是真实完整的情况下,CBO优化器通常都可以制定最优的执行计划。
1183 0
+关注
404
文章
3
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载