代码之家  ›  专栏  ›  技术社区  ›  user1589188

向查询中添加行数是否会自动排序?

  •  0
  • user1589188  · 技术社区  · 5 年前

    如果我加上 ROW_NUMBER 以简单的方式 select 查询时,结果将按 排号 纵然没有 order by 添加到 选择 在最后询问。我试过了

    • 没有 排号 -结果按随机顺序排列
    • 具有 ROW_NUMBER over (order by some_col) -结果由此自动排序 排号
    • 具有 ROW_NUMBER over (order by some_col desc) -结果再次自动按此顺序排序 排号 反映新方向的专栏

    为什么会这样?有没有隐含的 订购人 使用时 排号 ?

    如果这是特定于供应商的,我是在MSSQLS2014上测试的

    0 回复  |  直到 5 年前
        1
  •  3
  •   Venkataraman R    5 年前

    窗口函数中的ORDER BY子句仅控制窗口函数考虑的行的顺序。它不能保证最终结果集的顺序。

    Over clause

    笔记 :OVER子句中的ORDER BY子句仅控制窗口使用分区中的行的顺序 作用它不控制最终结果集的顺序。 如果查询本身没有ORDER BY子句,则行的顺序 这不是保证。您可能会注意到,您的查询可能正在返回 最后一个指定的OVER子句的顺序是由于 这是目前在SQL Server中实现的。如果SQL Server 微软的团队改变了它的工作方式,它可能不再 按照您当前观察的方式排列结果。如果 如果需要结果集的特定顺序,则必须提供 针对查询本身的ORDER BY子句。