如何在 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 视图中排序的主要内容,如果未能解决你的问题,请参考以下文章

SQL中关于视图的问题

如何修复 SQL Server 查询中的排序规则冲突?

如何使用 SMO 脚本生成 sql 脚本

如何将原始 SQL 转换为 Yii2,如查找查询

SQL如何显示查询结果的前100条?

用户按下排序按钮后如何在列表视图中显示排序列表?