SELECT DISTINCT,查询结果中将只保留唯一的行。也就是说,对于结果中所有完全相同的行,每组最终只会保留一行。
你可以指定哪些列的值必须唯一:SELECT DISTINCT ON (column1, column2,...)。如果未指定列,则会将所有列都纳入考虑。
考虑下表:
DISTINCT:
DISTINCT:
DISTINCT 和 ORDER BY
DISTINCT 和 ORDER BY 子句。DISTINCT 子句会在 ORDER BY 子句之前执行。
考虑下列表:
2, 4 在排序前被截断。
编写查询时,请将这一实现上的特性考虑在内。
NULL 处理
DISTINCT 对 NULL 的处理方式相当于将 NULL 视为一个特定值,且 NULL==NULL。换句话说,在 DISTINCT 的结果中,包含 NULL 的不同组合都只会出现一次。这与 NULL 在大多数其他场景下的处理方式不同。
替代方案
SELECT 子句中指定的同一组值应用 GROUP BY,从而获得相同的结果。不过,与 GROUP BY 的做法相比,还是有几点不同: