PostgreSQL DISTINCTON用法
·
PostgreSQL的DISTINCT ON是一种特殊的语法,用于根据指定列去重,同时返回其他列的值。与标准SQL的DISTINCT不同,DISTINCT ON允许在去重时保留每组重复值中的第一行(或其他排序后的行)。
SELECT DISTINCT ON (CREATED_NAME) CREATED_NAME, CRATED_DATE
FROM EMP
WHERE CREATED_TYPE = 'A'
ORDER BY CREATED_NAME, CRATED_DATE
PostgerSQL中DISTINCT ON (列名)中,已经隐含了按列名分组,并且ORDER BY 列名 是不能缺少的,代表对于每个CREATED_NAME,只返回第一条记录(根据ORDER BY 排序的第一条)
ORDER BY子句必须包含DISTINCT ON的所有表达式,且这些表达式必须作为排序的最左侧字段。例如:
-- 正确写法
SELECT DISTINCT ON (a, b) a, b, c FROM table ORDER BY a, b, c;-- 错误写法(缺少b的排序)
SELECT DISTINCT ON (a, b) a, b, c FROM table ORDER BY a, c;
与GROUP BY的区别
DISTINCT ON和GROUP BY都能实现去重,但:
GROUP BY会对结果集进行聚合计算DISTINCT ON只是简单地选择每组的第一行,保留原始数据
更多推荐
所有评论(0)