PostgreSQL - palavra-chave DISTINCT

O PostgreSQL DISTINCT A palavra-chave é usada em conjunto com a instrução SELECT para eliminar todos os registros duplicados e buscar apenas registros únicos.

Pode haver uma situação em que você tenha vários registros duplicados em uma tabela. Ao buscar esses registros, faz mais sentido buscar apenas registros únicos em vez de buscar registros duplicados.

Sintaxe

A sintaxe básica da palavra-chave DISTINCT para eliminar registros duplicados é a seguinte -

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

Exemplo

Considere a tabela COMPANY com os registros a seguir -

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

Vamos adicionar mais dois registros a esta tabela da seguinte maneira -

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

Agora, os registros na tabela COMPANY seriam -

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)

Primeiro, vamos ver como a seguinte consulta SELECT retorna registros de salários duplicados -

testdb=# SELECT name FROM COMPANY;

Isso produziria o seguinte resultado -

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

Agora, vamos usar DISTINCT palavra-chave com a consulta SELECT acima e veja o resultado -

testdb=# SELECT DISTINCT name FROM COMPANY;

Isso produziria o seguinte resultado, onde não temos nenhuma entrada duplicada -

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