PostgreSQL - Từ khóa DISTINCT

PostgreSQL DISTINCT từ khóa được sử dụng cùng với câu lệnh SELECT để loại bỏ tất cả các bản ghi trùng lặp và chỉ tìm nạp các bản ghi duy nhất.

Có thể có một tình huống khi bạn có nhiều bản ghi trùng lặp trong một bảng. Trong khi tìm nạp các bản ghi như vậy, sẽ hợp lý hơn nếu chỉ tìm nạp các bản ghi duy nhất thay vì tìm nạp các bản ghi trùng lặp.

Cú pháp

Cú pháp cơ bản của từ khóa DISTINCT để loại bỏ các bản ghi trùng lặp như sau:

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

Thí dụ

Xem xét bảng COMPANY có các bản ghi như sau:

# 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)

Hãy để chúng tôi thêm hai bản ghi nữa vào bảng này như sau:

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 );

Bây giờ, các bản ghi trong bảng COMPANY sẽ là -

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)

Đầu tiên, hãy xem cách truy vấn SELECT sau trả về các bản ghi lương trùng lặp như thế nào:

testdb=# SELECT name FROM COMPANY;

Điều này sẽ tạo ra kết quả sau:

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

Bây giờ, hãy để chúng tôi sử dụng DISTINCT từ khóa với truy vấn SELECT ở trên và xem kết quả:

testdb=# SELECT DISTINCT name FROM COMPANY;

Điều này sẽ tạo ra kết quả sau đây mà chúng tôi không có bất kỳ mục nhập trùng lặp nào -

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