2012-01-12 70 views

回答

3

當指定DISTINCT時,SQL Server只允許您在SELECT列表中允許ORDER BY列,否則未選定的列可能會有多個值映射到返回結果中的特定行。

如果您知道事實並非如此,您可以使用CTE。

;WITH CTE 
    AS (SELECT DISTINCT foo, 
         bar 
     FROM T) 
SELECT foo 
FROM CTE 
ORDER BY bar 

如果這不適合你,因爲確實有每個foo多個可能bar值,則需要明確地告訴它使用訂購的目的,其價值。例如改爲使用GROUP BY

SELECT foo 
FROM T 
GROUP BY foo 
ORDER BY MIN(bar) 
+0

+1這是一個很好的解決方法!我會記住那一個。 – Aaron 2012-01-12 13:28:21

+0

非常感謝 – 2012-01-13 06:25:01