【问题标题】:T-SQL select distinct a int column without sort orderT-SQL 在没有排序顺序的情况下选择不同的 int 列
【发布时间】:2014-08-14 14:06:35
【问题描述】:

我有一个名为“RootID”的 int 列,其中包含值:

3
3
3
6
6
5
4

我想在此列中选择唯一值,我使用如下 distinct 子句:

select distinct RootID from MyTable.

结果是“3 4 5 6”。

但我想要的结果是 "3 6 5 4" 。 (行的实际外观)。

我想要一个具有实际行外观的结果,没有自动排序。 你有什么建议吗???

【问题讨论】:

  • 如果你没有定义一个顺序,那么你就不能在任何查询中依赖任何特定的顺序。
  • 您在屏幕上看到的顺序不是数据中的隐含顺序。可能会添加一个标识列并按此顺序。
  • 没有固有顺序,要随机顺序吗?这是唯一的专栏,是RootId PK吗?如果您想保留创建顺序,请添加 datetime 列并按此排序。
  • @Achilles_VN:没有行的实际外观。顺便说一句,它们在 SSMS 中出现在哪里?如果您不指定一个,请不要依赖订单。默认情况下,表中的行根本不排序。您必须明确指定 ORDER BY ColumnName。

标签: tsql distinct


【解决方案1】:

没有自动订购。 DISTINCT 运算符不保留顺序,因此您会以未定义的顺序获得不同的结果。这是设计使然。

【讨论】:

    【解决方案2】:

    表已设置。 Set 没有顺序。根据定义,行的外观是随机的。有时,它们按 Id 排序,因为 SQL Server 从已排序的聚集索引中读取它们。

    【讨论】:

      猜你喜欢
      • 2012-10-15
      • 1970-01-01
      • 2012-02-18
      • 2015-01-07
      • 1970-01-01
      • 2016-03-30
      • 2021-11-05
      • 1970-01-01
      • 2018-11-16
      相关资源
      最近更新 更多