不明确的订购不到位

时间:2013-03-07 21:09:38

标签: sql sql-server

我有一个临时表,列出了由不同列排序的名称列表,例如

@table:

John, 1
Mary, 3
Mary, 5
Mary, 7
John, 8
Kyle, 9
Brad, 10

当我打电话给一个简单的select * from @table时,这就是我得到的,但当我打电话给select distinct name from @table时,我得到了这个:

Kyle
John
Mary
Brad

为什么不使用就地订购?这是一个我不知道的sql怪癖吗?我希望(并希望)它是:

John
Mary
Kyle
Brad

编辑:附加问题:由于我在原始表上“订购了”,是否有一个功能性的原因导致它不会持续存在?

1 个答案:

答案 0 :(得分:3)

使用SELECT DISTINCT时,您无法通过未选择的列进行排序。做你想做的最简单的方法是:

SELECT name FROM @table GROUP BY name ORDER BY min(id);