当前位置: > 财经>正文

SQL语句创建视图为什么不能用order by 期货交易所的会员包括投资银行吗为什么不能用

2023-08-22 09:46:43 互联网 未知 财经

很多地方都没解释清楚这个问题,有代表性的就是这个 博客 。

论坛 上有人解释了,但是年代久远,我这里把它捞出来。答主是 这位 。内容如下:

创建排序视图的企图本身就是错误的,因为视图表示一个表,而表是不会对行排序的。众所周知,在SQL Server 2000中追求排序视图的开发人员会利用貌似系统漏洞的一个技巧。 利用这个漏洞可以创建一个非常可笑的视图,在该视图中,指定TOP 100 PERCENT以及一个ORDER BY子句,就像这样: ALTER VIEW dbo.VcustsWithOrders AS SELECT TOP (100) PERCENT Country, CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Phone, Fax FROM Customers AS C WHERE EXISTS (SELECT * FROM dbo.Orders AS O    WHERE O.CustomerID = C.CustomerID) ORDER BY Country; GO

这些语句最终的执行结果有两列 country ,怎么排序呢?会引起混乱。视图不允许排序的根源就是在后续处理中会引起混乱,不能用 distinct 应该也一样。总之,把视图当成基本表来约束就很安全。

还有一个例子是从 StackExchange (

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。