Resumo : neste tutorial, você aprenderá como usar a SELECT DISTINCT
cláusula SQLite para remover linhas duplicadas no conjunto de resultados.
SELECT DISTINCT
Introdução à cláusula SQLite
A DISTINCT
cláusula é uma cláusula opcional da SELECT
declaração. A DISTINCT
cláusula permite remover as linhas duplicadas no conjunto de resultados.
A seguinte declaração ilustra a sintaxe da DISTINCT
cláusula:
SELECT DISTINCT select_list
FROM table;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
- Primeiro, a
DISTINCT
cláusula deve aparecer imediatamente após aSELECT
palavra-chave. - Segundo, você coloca uma coluna ou lista de colunas após a
DISTINCT
palavra-chave. Se você usar uma coluna, o SQLite usará os valores dessa coluna para avaliar a duplicata. Caso você use múltiplas colunas, o SQLite usa a combinação de valores nessas colunas para avaliar a duplicata.
SQLite considera NULL
valores como duplicados. Se você usar a DISTINCT
cláusula com uma coluna que possui NULL
valores, o SQLite manterá uma linha de um NULL
valor.
Na teoria do banco de dados, se uma coluna contém NULL
valores, significa que não temos as informações sobre essa coluna de registros específicos ou que as informações não são aplicáveis.
Por exemplo, se um cliente tiver um número de telefone com um NULL
valor, isso significa que não temos informações sobre o número de telefone do cliente no momento do registro das informações do cliente ou o cliente pode não ter nenhum número de telefone.
SELECT DISTINCT
Exemplos de SQLite
Usaremos a customers
tabela do banco de dados de exemplo para demonstração.
Suponha que você queira saber as cidades onde os clientes estão localizados, você pode usar o SELECT
extrato para obter os dados da city
coluna da customers
tabela da seguinte forma:
SELECT city
FROM customers
ORDER BY city;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Ele retorna 59 linhas. Existem poucas linhas duplicadas, como Berlin
London
, e Mountain View
para remover essas linhas duplicadas, você usa a DISTINCT
cláusula a seguir:
SELECT DISTINCT city
FROM customers
ORDER BY city;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Retorna 53 linhas porque a DISTINCT
cláusula removeu 6 linhas duplicadas.
SQLite SELECT DISTINCT
em múltiplas colunas
A declaração a seguir encontra cidades e países de todos os clientes.
SELECT
city,
country
FROM
customers
ORDER BY
country;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O conjunto de resultados contém cidade e país duplicados, por exemplo, São Paulo no Brasil, conforme mostrado na imagem acima.
Para remover cidade e país duplicados, aplique a DISTINCT
cláusula às colunas de cidade e país, conforme mostrado na consulta a seguir:
SELECT DISTINCT
city,
country
FROM
customers
ORDER BY
country;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Aqui está a saída parcial:
Conforme mencionado anteriormente, o SQLite usa a combinação de cidade e país para avaliar a duplicata.
SQLite SELECT DISTINCT
com NULL
exemplo
Esta instrução retorna os nomes das empresas dos clientes da customers
tabela.
SELECT company
FROM customers;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Ele retorna 59 linhas com muitos NULL
valores.
Agora, se você aplicar a DISTINCT
cláusula à instrução, ela manterá apenas uma linha com NULL
valor.
Veja a seguinte declaração:
SELECT DISTINCT company
FROM customers;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A instrução retorna 11 linhas com um NULL
valor.
Observe que se você selecionar uma lista de colunas de uma tabela e quiser obter uma combinação exclusiva de algumas colunas, poderá usar a GROUP BY
cláusula.
Neste tutorial, você aprendeu como remover linhas duplicadas de um conjunto de resultados usando a SELECT DISTINCT
cláusula SQLite.