如何在 sql 视图中排序
Posted
技术标签:
【中文标题】如何在 sql 视图中排序【英文标题】:How to sort within a sql view 【发布时间】:2010-01-06 00:51:52 【问题描述】:我创建了一个 sql 视图,我需要通过对 4 个字段使用 ORDER BY 对选择结果进行排序,但我收到消息说 ORDER BY 不能在视图中使用,除非我使用 TOP。 有人可以解释为什么需要 TOP,有人有在 sql 视图中排序的解决方法吗?
谢谢。
【问题讨论】:
【参考方案1】:您不需要对视图进行排序。视图就像一个表格,因此您可以在从中选择时对其进行排序:
select * from yourView order by yourColumns
【讨论】:
【参考方案2】:不保证视图的输出是有序的
只有最外面的 ORDER BY 应用于结果集:不是任何内部的。所以只有这个 ORDER BY 才能保证有效:
SELECT col1, col2, FROm MyView ORDER BY col2
您可以将它添加到视图或派生表中,它会强制使用“intermediate materialisation”,因为必须对结果进行排序。但是,对于 SQL Server 2005 及更高版本,您必须使用 TOP 2000000000
而不是 TOP 100 PERCENT
(Daniel Vassallo 提到的那个 HF 除外!)
某人将在某些时候也会以与内部不同的顺序使用您的视图。
【讨论】:
【参考方案3】:你可以试试:
CREATE VIEW View_Products
AS
SELECT ProductID, ProductName, UnitPrice, CreateDate FROM Products
Order by CreateDate DESC
OFFSET 0 ROWS
【讨论】:
【参考方案4】:对您打算用来对视图进行排序的列创建索引有帮助吗?
【讨论】:
以上是关于如何在 sql 视图中排序的主要内容,如果未能解决你的问题,请参考以下文章