使用distinct子句进行排序

adi*_*iti 5 sql sql-server

考虑以下

empname salary
a   10000
b   5000
c   5000
Run Code Online (Sandbox Code Playgroud)

如果我做 select distinct salary from @t

输出是

salary
5000
10000
Run Code Online (Sandbox Code Playgroud)

它已被排序......为什么这样?

Ale*_* K. 7

鉴于没有明确ORDER BY的返回行的顺序是未定义的; 将DISTICT可能导致distinct-sort(看计划),这可能是为什么他们在你的例子是有序的运行.


hex*_*mal 0

实际上在这种情况下没有顺序保证,因为sql-server引擎的优化算法不同