Resumo : neste tutorial, você aprenderá como encontrar valores duplicados de uma ou mais colunas no MySQL.
A duplicação de dados ocorre por vários motivos. Encontrar valores duplicados é uma das tarefas importantes que você deve realizar ao trabalhar com bancos de dados.
Configurando uma tabela de exemplo
Primeiro, crie uma tabela nomeada contacts
com quatro colunas: id
, first_name
, last_name
e email
.
CREATE TABLE contacts (
id INT PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(255) NOT NULL
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, insere linhas na contacts
tabela:
INSERT INTO contacts (first_name,last_name,email)
VALUES ('Carine ','Schmitt','[email protected]'),
('Jean','King','[email protected]'),
('Peter','Ferguson','[email protected]'),
('Janine ','Labrune','[email protected]'),
('Jonas ','Bergulfsen','[email protected]'),
('Janine ','Labrune','[email protected]'),
('Susan','Nelson','[email protected]'),
('Zbyszek ','Piestrzeniewicz','[email protected]'),
('Roland','Keitel','[email protected]'),
('Julie','Murphy','[email protected]'),
('Kwai','Lee','[email protected]'),
('Jean','King','[email protected]'),
('Susan','Nelson','[email protected]'),
('Roland','Keitel','[email protected]');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, consulte os dados da contacts
tabela:
SELECT * FROM contacts
ORDER BY email;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Na contacts
tabela, temos algumas linhas que possuem valores duplicados nas colunas first_name
, last_name
e email
. Vamos aprender como encontrá-los.
Encontre valores duplicados em uma coluna
Para encontrar valores duplicados em uma coluna de uma tabela, siga estas etapas:
- Primeiro, use a
GROUP BY
cláusula para agrupar todas as linhas pela coluna de destino, que é a coluna que você deseja verificar como duplicada. - Em seguida, use a
COUNT()
função daHAVING
cláusula para verificar se algum grupo possui mais de 1 elemento. Esses grupos são duplicados.
A consulta a seguir ilustra a ideia:
SELECT
col,
COUNT(col)
FROM
table_name
GROUP BY col
HAVING COUNT(col) > 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Ao usar este modelo de consulta, você pode encontrar linhas que possuem emails duplicados na contacts
tabela da seguinte forma:
SELECT
email,
COUNT(email)
FROM
contacts
GROUP BY email
HAVING COUNT(email) > 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Esta imagem mostra o resultado da consulta que mostra os emails duplicados:
Encontre valores duplicados em várias colunas
Às vezes, você deseja encontrar linhas duplicadas com base em várias colunas em vez de uma. Nesse caso, você pode usar a seguinte consulta:
SELECT
col1, COUNT(col1),
col2, COUNT(col2),
...
FROM
table_name
GROUP BY
col1,
col2, ...
HAVING
(COUNT(col1) > 1) AND
(COUNT(col2) > 1) AND
...
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
As linhas são consideradas duplicadas somente quando a combinação de colunas é duplicada, portanto usamos o AND
operador na HAVING
cláusula.
Por exemplo, para encontrar linhas na contacts
tabela com valores duplicados em first_name
, last_name
e email
coluna, você usa a seguinte consulta:
SELECT
first_name, COUNT(first_name),
last_name, COUNT(last_name),
email, COUNT(email)
FROM
contacts
GROUP BY
first_name ,
last_name ,
email
HAVING COUNT(first_name) > 1
AND COUNT(last_name) > 1
AND COUNT(email) > 1;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
O seguinte ilustra a saída da consulta:
Neste tutorial, você aprendeu como encontrar linhas duplicadas com base no valor de uma ou mais colunas no MySQL.