2014-09-19 62 views
0

现在,我比Dev更像是一个开发人员,但这似乎不是很合乎逻辑,所以暂且不管是否有更好的方法来做到这一点,我正努力寻找这方面的逻辑。SQL Server Select Distinct Returns每次都有不同的结果

选择从tbl_result

甲看似简单片SQL的不同testid,右,麻烦的是,当我运行它(无论是在代码和查询分析仪)我得到不同的结果,每次设置。有趣的是,结果集返回相同数量的记录,并且它们相对于另一个是唯一的(两个数据集中都没有值),但在随机数的F5推后,我们得到不同的结果,甚至没有一致的次数,每个不同的集合显示。

表结构:

  • 12列,大多是整数,一个VARCHAR(50)
  • 它的标识列作为主键,所以聚集索引
  • 有超过50万的记录在表格

正如我所说的开始,我知道我可以以不同的方式获得1000个左右的testIds列表,但我真的很好奇,如果有人曾经遇到过这种情况。

在此先感谢。

+0

如果只是以不同的*顺序返回行,那完全是预期的。 SQL没有提供* order *保证,它会返回结果,除了你通过'ORDER BY'子句提供给它的任何显式需求 - 没有'ORDER BY',没有保证。 – 2014-09-19 05:53:38

回答

1

它可能返回相同的testid值,只是以不同的顺序?你能提供关于表结构的更多信息吗?桌子上是否有聚集索引和/或主键?为什么你特别选择DISTINCT而不是仅仅选择testids?你看过执行计划吗?

+0

对所有问题抱歉,这只是我首先考虑的所有事情的快速清单,或者可能有助于我们排查问题。 – 2014-09-19 03:22:38

+0

1 - 这是不同的结果,因为我试图解释,但很难解释。 2 - 我解释了上面的表结构 - 它是聚簇的,并且确实有一个主(标识列) 3 - 正如我所说,我确实知道如何从不同的表中获取不同的Ids列表, t解决这个问题 4 - 是的,我们已经执行了执行计划,总是一样的。 老兄,这是我的头,它只是不合逻辑:) – Ian 2014-09-19 03:27:08

+0

是啊现在担心所有的问题,他们是好的:) – Ian 2014-09-19 03:28:13