PostgreSQL的去重查询 SELECT DISTINCT

1,449 阅读1分钟

SELECT DISTINCT 简介

DISTINCT 放在 SELECT 语句中,用于删除结果集中重复的行,DISTINCT 子句为每组重复项保留一行,它可用于数据表的一列或多列。

DISTINCT 子句的语法如下:

SELECT 
  DISTINCT field_1 
FROM
  table_name;

在此声明中,field_1 字段中的值用于评估重复项。

PostgreSQL 还提供了DISTINCT ON(表达式),用来在多字段里,依然使用第一个字段来判断是否重复。

SELECT 
  DISTINCT ON(field_1),
  field_2
FROM
  table_name
ORDER BY 
  field_1,
  field_2;

从 SELECT 语句返回的行的顺序是不可预知的,因此每个副本组的“第一行”也是不可预知的。所以,我们建议在使用 DISTINCT ON(表达式) 的语句时,总是使用 ORDER BY 子句进行排序,以便使返回的结果集更清晰明了。

注意:DISTINCT ON(表达式)里的 表达式,必须与 ORDER BY 子句的第一个表达式一致。

参考: pg.sjk66.com/postgresql/…