sqlserver 创建视图失败,原因:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver 创建视图失败,原因:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效相关的知识,希望对你有一定的参考价值。

sql语句:
create view v$_emp_1
as
select * from emp
where emp.sal > (select min(sal) from emp)
order by sal

错误原因:
消息 1033,级别 15,状态 1,过程 v$_emp_1,第 5 行
除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

求大家帮忙分析下,thank!

sqlserver中创建视图时,as下不能出现order by
其实你要排序的话可以对视图进行排序嘛,没必要在视图创建时候就排序
--创建视图

create view v$_emp_1
as
select * from emp
where emp.sal > (select min(sal) from emp)
--查询视图
select * from v$_emp_1 order by sal--这儿排序不就行了嘛~~~采纳哦
参考技术A 错误提示说得很清楚了。"不能用order by "追问

select * from emp
where emp.sal > (select min(sal) from emp)
order by sal
这样查询并不会出错,但创建视图时出错,大哥你能解释的再清楚些吗?

追答

视图、触发器、存储过程、自定函数是数据库特定的样式。
有一些系统自带的函数不能用在里面,详细看在查询平台下“Ctrl+F1“看 联机丛书和帮助说明。

用视图会对数据结构保密、查询方便。
但数据量超1千万时,建议用存储过程。
=============================================
微软的说明
http://msdn.microsoft.com/zh-cn/library/ms189463.aspx

http://msdn.microsoft.com/zh-cn/library/ms188385.aspx

sqlserver视图与创建视图的语句查询的结果不一致

问题描述:sqlserver中创建了一个视图,单独查询这个视图与把创建视图的语句拿出来查询的结果不一样,有一个字段从视图中查询为null,从语句中查询是有值。

解决方案:把这个视图删除掉,重新创建一遍,再次查询,两边的结果保持一致。具体的原因未知。

以上是关于sqlserver 创建视图失败,原因:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效的主要内容,如果未能解决你的问题,请参考以下文章

SqlServer 可更新订阅队列读取器代理错误:试图进行的插入或更新已失败

sql server2005新创建的登录名无法登陆

ODBC数据库连接SQL Server失败?啥原因啊!~~

Sql Server 2008 视图中的 ORDER BY

sqlserver视图与创建视图的语句查询的结果不一致

sql server 2008安装出错,试图执行未经授权的操作。