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)
从结果可以看到,重复数据已经被过滤。