SELECT DISTINCT没有排序行

时间:2013-02-01 16:13:01

标签: sql sql-server

我正在进行以下查询:

SELECT DISTINCT column1, colum2 FROM table.... WHERE....

但我不希望返回的结果是有序的。 如何避免sql 排序这行?

3 个答案:

答案 0 :(得分:8)

他们本身并没有得到排序,他们只是使用你桌子上的任何索引返回,或者只是扫描整个表格。如果您希望它们随机排序,那么您需要在查询中明确说出:

SELECT *
FROM (SELECT DISTINCT column1, colum2 
      FROM table.... 
      WHERE....) A
ORDER BY NEWID()

FIDDLE DEMO

答案 1 :(得分:1)

SELECT DISTINCT(或其他任何东西)不需要ORDER BY ......你看到了什么样的排序?可能只是数据在输入系统时被排序。

答案 2 :(得分:1)

select distinct必须标识重复的行。基本上有两种方法可以做到这一点。一种是对数据进行排序(可以使用索引隐式完成)。然后重复的行显示在彼此旁边。另一种是构建哈希表。重复的行显示在相同的散列桶中。

对于您的查询,SQL Server选择对数据进行排序。它看起来好像正在订购数据。在多线程系统上,数据可能排序,但是当您滚动它时,您会发现排序是块(因为每个线程都返回数据)。