使用Distinct&在Sql Server 2008中排序

时间:2012-01-12 13:21:17

标签: sql-server distinct

我想使用order by在连接查询中使用distinct。不同的列和按列的顺序是不同的。

1 个答案:

答案 0 :(得分:3)

当指定ORDER BY时,SQL Server仅允许您SELECT列表中的DISTINCT列,否则非选定列可能有多个值映射到该列中的特定行返回结果。

如果你知道事实并非如此,你可以使用CTE。

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

如果这对您不起作用,因为每个bar实际上有多个foo值,那么您需要明确告诉它使用哪个值进行排序。例如改为使用GROUP BY

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