PostgreSQL SELECT DISTINCT

Introdução à cláusula SELECT DISTINCT no PostgreSQL

A cláusula DISTINCT é usada na instrução SELECT para remover linhas duplicadas de um conjunto de resultados. A cláusula DISTINCT mantém uma linha para cada grupo de linhas duplicadas. A cláusula DISTINCTpode ser aplicada a uma ou mais colunas na lista de seleção da instrução SELECT.

O seguinte ilustra a sintaxe da cláusula  DISTINCT:

SELECT
   DISTINCT column1
FROM
   table_name;

Nesta declaração, os valores da coluna column1 são usados ​​para avaliar a duplicata.

Se você especificar várias colunas, a cláusula DISTINCT avaliará a duplicata com base na combinação de valores dessas colunas.

SELECT
   DISTINCT column1, column2
FROM
   table_name;

Neste caso, a combinação de valores em ambas colunas column1 e column2  será usada para avaliar a duplicata.

O PostgreSQL também fornece o DISTINCT ON (expression) para manter a “primeira” linha de cada grupo de duplicatas usando a seguinte sintaxe:

SELECT
   DISTINCT ON (column1) column_alias,
   column2
FROM
   table_name
ORDER BY
   column1,
   column2;

A ordem das linhas retornadas da instrução SELECT  não é especificada, portanto, a “primeira” linha de cada grupo da duplicata também não é especificada.

É uma boa prática sempre usar a cláusula ORDER BY com o DISTINCT ON(expression)  para tornar o conjunto de resultados previsível.

Observe que a expressão DISTINCT ON deve corresponder à expressão mais à esquerda na cláusula ORDER BY.

Exemplos de SELECT DISTINCT no PostgreSQL

Vamos criar uma nova tabela chamada distinct_demo e inserir dados  nela para praticar a cláusula  DISTINCT.

Observe que você aprenderá como criar uma tabela e inserir dados em uma tabela no tutorial subsequente. Neste tutorial, você apenas executa a instrução no psql ou pgAdmin para executar as instruções.

Primeiro, use a seguinte instrução CREATE TABLE para criar a tabela  distinct_demo que consiste em três colunas: idbcolorfcolor.

CREATE TABLE distinct_demo (
	id serial NOT NULL PRIMARY KEY,
	bcolor VARCHAR,
	fcolor VARCHAR
);

Em segundo lugar, insira algumas linhas na tabela distinct_demo usando a seguinte instrução  INSERT:

INSERT INTO distinct_demo (bcolor, fcolor)
VALUES
	('red', 'red'),
	('red', 'red'),
	('red', NULL),
	(NULL, 'red'),
	('red', 'green'),
	('red', 'blue'),
	('green', 'red'),
	('green', 'blue'),
	('green', 'green'),
	('blue', 'red'),
	('blue', 'green'),
	('blue', 'blue');

Terceiro, consulte os dados da tabela distinct_demo usando a instrução SELECT:

SELECT
	id,
	bcolor,
	fcolor
FROM
	distinct_demo ;

Exemplo de DISTINCT em uma coluna do PostgreSQL

A instrução a seguir seleciona valores exclusivos na coluna  bcolor da tabela t1 e classifica o conjunto de resultados em ordem alfabética usando a cláusula ORDER BY.

SELECT
	DISTINCT bcolor
FROM
	distinct_demo
ORDER BY
	bcolor;

PostgreSQL DISTINCT em múltiplas colunas

A instrução a seguir demonstra como usar a cláusula  DISTINCT em várias colunas:

SELECT
	DISTINCT bcolor,
	fcolor
FROM
	distinct_demo
ORDER BY
	bcolor,
	fcolor;

Como especificamos as colunas bcolorfcolor na cláusula SELECT DISTINCT, o PostgreSQL combinou os valores em ambas bcolor e fcolor colunas para avaliar a exclusividade das linhas.

A consulta retorna a combinação única de bcolorfcolor da tabela distinct_demo . Observe que a tabela distinct_demo possui duas linhas com valor red nas   colunas bcolor e   fcolor. Quando aplicamos o DISTINCT a ambas as colunas, uma linha foi removida do conjunto de resultados porque é a duplicata.

Exemplo de PostgreSQL DISTINCT ON

A instrução a seguir classifica o conjunto de resultados por   bcolor e   fcolore, para cada grupo de duplicatas, mantém a primeira linha no conjunto de resultados retornado.

SELECT
	DISTINCT ON (bcolor) bcolor,
	fcolor
FROM
	distinct_demo 
ORDER BY
	bcolor,
	fcolor;

Aqui está o resultado:

Neste tutorial, você aprendeu como usar a instrução SELECT DISTINCT  para remover linhas duplicadas retornadas por uma consulta.

Deixe um comentário

O seu endereço de e-mail não será publicado.