Mat*_*ick 3 sql sql-server sql-order-by window-functions
我正在对SEDE进行查询:
select top 20
row_number() over(order by "percentage approved" desc, approved desc),
row_number() over(order by "total edits" asc),
*
from editors
where "total edits" > 30
Run Code Online (Sandbox Code Playgroud)
考虑到两个窗口函数,结果集的顺序是什么?
我怀疑它未定义但无法找到确定的答案.OTOH,具有一个这样的窗口函数的查询的结果根据该over(order by ...)子句被排序.
未定义的任何 SQL Server查询的结果集ORDER BY未定义.
这包括在查询中具有窗口函数或ORDER BY在子查询中具有窗口函数的情况.结果顺序取决于很多因素,除非您指定一个因素,否则这些因素都不会得到保证ORDER BY.
结果可以按任何顺序返回.
现在,它们通常会按照OVER子句中指定的顺序返回,但这只是因为SQL Server可能会选择一个查询计划来对行进行排序以计算聚合.这绝不是保证,因为它可以随时选择不同的查询计划,尤其是当您使查询更复杂时,这会扩展可能的查询计划的空间.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |