我想使用order by在连接查询中使用distinct。不同的列和按列的顺序是不同的。
答案 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)