SQL 窗口函数:结果是否有序?

Man*_*ngo 1 order-by window-functions

如果我有一个使用类似的窗口函数

SELECT *, row_number() OVER (ORDER BY something) FROM table
Run Code Online (Sandbox Code Playgroud)

结果应该排序吗?

我目前正在 Microsoft SQL Server 中测试我的查询,它肯定是已排序的,但我知道该产品倾向于在未询问时对行进行排序。

这是标准行为吗?

小智 5

如果没有演示 ORDER BY 子句,标准行为将返回一个没有特定顺序的集合。

我认为Itzik Ben-Gan解释得最好,即使没有他的一本书,您也可以在本文中找到解释。大约 12 段之后,在第一个代码示例旁边,文本描述了窗口函数中的 ORDER BY 如何提供逻辑函数来描述集合,以及它如何与演示 ORDER BY 子句完全分开。

一个相关的问题出现在这里 SELECT ROW_NUMBER() 是否保证返回按生成的行号排序的结果?