PostgreSQL DISTINCT 关键字

在 PostgreSQL 中,DISTINCT 关键字与 SELECT 语句一起使用,用于去除重复记录,只获取唯一的记录。

我们平时在操作数据时,有可能出现一种情况,在一个表中有多个重复的记录,当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。

语法

用于去除重复记录的 DISTINCT 关键字的基本语法如下:

									SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
								

实例

创建 COMPANY 表( 下载 COMPANY SQL 文件 ),数据内容如下:

									yssmxdb# select * from COMPANY;
 id_name _age_address  _salary
----+-------+-----+-----------+--------
  1_Paul _ 32_California|  20000
  2_Allen_ 25_Texas    _ 15000
  3_Teddy_ 23_Norway   _ 20000
  4_Mark _ 25_Rich-Mond_ 65000
  5_David_ 27_Texas    _ 85000
  6_Kim  _ 22_South-Hall|  45000
  7_James_ 24_Houston  _ 10000
(7 rows)
								

让我们插入两条数据:

									INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (8, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (9, 'Allen', 25, 'Texas', 15000.00 );
								

现在数据如下:

									id_name _age_address   _salary
----+-------+-----+------------+--------
  1_Paul _ 32_California_ 20000
  2_Allen_ 25_Texas     _ 15000
  3_Teddy_ 23_Norway    _ 20000
  4_Mark _ 25_Rich-Mond _ 65000
  5_David_ 27_Texas     _ 85000
  6_Kim  _ 22_South-Hall_ 45000
  7_James_ 24_Houston   _ 10000
  8_Paul _ 32_California_ 20000
  9_Allen_ 25_Texas     _ 15000
(9 rows)
								

接下来我们找出 COMPANY 表中的所有 NAME:

									yssmxdb=# SELECT name FROM COMPANY;
								

得到结果如下:

									name
-------
 Paul
 Allen
 Teddy
 Mark
 David
 Kim
 James
 Paul
 Allen
(9 rows)
								

现在我们在 SELECT 语句中使用 DISTINCT 子句:

									yssmxdb=# SELECT DISTINCT name FROM COMPANY;
								

得到结果如下:

									name
-------
 Teddy
 Paul
 Mark
 David
 Allen
 Kim
 James
(7 rows)
								

从结果可以看到,重复数据已经被过滤。