【问题标题】:Defined SQL behavior when ordering by values with same value按具有相同值的值排序时定义的 SQL 行为
【发布时间】:2015-03-25 03:10:50
【问题描述】:

我正在翻阅一个非常大的结果集,页面大小为 5000,并按最后更新的日期时间排序。我还选择了最后更新时间小于操作开始时间的所有记录。

一切正常,但是我偶尔会多次看到记录。我想知道当有序列共享相同值时定义的行为是什么。

例如,如果我按 X 列排序,并且三行的该列的值为 5。这些值是否总是使用相同的 order by 表达式以相同的顺序排列?

【问题讨论】:

  • 根据this SO article,SQL 标准并没有指定值是否总是相同的顺序。

标签: sql sql-server


【解决方案1】:

无法保证始终应用相同的订单。

如果ORDER BY 中没有使用列,则结果将是随机的。您可能会观察到可重复的结果(意味着多次运行的顺序相同),但您不能相信它总是正确的。您可能希望在 ORDER BY 中添加另一列以获得一致的结果。

【讨论】:

    【解决方案2】:

    它与主键的概念相同。您需要能够唯一标识数据,因此程序别无选择,只能以相同的方式返回数据。考虑在您的 ORDER BY 语句中添加另一列并使用ASCDESC 确保它以相同的方式打印出来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-18
      • 1970-01-01
      • 2013-08-17
      • 2015-04-06
      • 2019-10-20
      • 2022-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多