【问题标题】:Default sort order for a select query in SQL Server 2005 and SQL Server 2012SQL Server 2005 和 SQL Server 2012 中选择查询的默认排序顺序
【发布时间】:2016-03-18 06:14:42
【问题描述】:

SQL Server 2005 和 SQL Server 2012 中选择查询的默认排序顺序有区别吗?

我有一个没有主键的表变量。当我在 SQL Server 2005 中对表变量执行选择查询时,会根据其中一列按字母顺序选择和显示记录。在 SQL Server 2012 中,记录的显示顺序与父表中的顺序相同。

【问题讨论】:

    标签: sql-server sorting sql-server-2005 sql-server-2012


    【解决方案1】:

    没有默认的排序顺序。除非您在 ORDER BY 子句中指定它,否则无法保证始终以相同的方式返回结果。

    您可能会观察到结果是按PK 或聚集索引排序的,但情况并非总是如此。


    您可能想阅读以下内容:

    Without ORDER BY, there is no default sort order by Alexander Kuznetsov

    【讨论】:

      【解决方案2】:

      MSDN 说:

      指定指定列中的值应按顺序排序 升序或降序。 ASC 从最低值到 最高值。 DESC 从最高值到最低值排序。 ASC 是 默认排序顺序。 Null 值被视为可能的最低值 价值观。

      所以在您的 ORDER BY 子句中,如果您没有提供排序顺序,那么默认情况下它将分别在 2005 年和 2012 年按升序排序。

      但是,如果您没有指定 ORDER BY 子句,则排序顺序未定义且不确定。

      【讨论】:

      • 谢谢。如果将 NULL 值视为可能的最低值,则所有具有 NULL 值的记录将首先出现,然后是不具有 NULL 的记录?
      • @KrithikaR:- 如果您不提供 ORDER BY,则不能保证每次都能得到相同的结果。但是我的建议是,如果您正在寻找特定的排序顺序,那么您应该提供 ORDER BY 子句。
      猜你喜欢
      • 2017-05-28
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 2010-10-03
      • 1970-01-01
      相关资源
      最近更新 更多