Como encontrar valores duplicados no MySQL

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 contactscom quatro colunas: id, first_name, last_namee 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 contactstabela:

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 contactstabela:

SELECT * FROM contacts
ORDER BY email;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Na contactstabela, temos algumas linhas que possuem valores duplicados nas colunas first_name, last_namee 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:

  1. Primeiro, use a GROUP BYcláusula para agrupar todas as linhas pela coluna de destino, que é a coluna que você deseja verificar como duplicada.
  2. Em seguida, use a COUNT()função da HAVINGclá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 contactstabela 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:

Exemplo de localização de valores duplicados do MySQL

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 ANDoperador na HAVINGcláusula.

Por exemplo, para encontrar linhas na contactstabela com valores duplicados em first_name, last_namee emailcoluna, 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:

MySQL encontra valores duplicados em múltiplas colunas

Neste tutorial, você aprendeu como encontrar linhas duplicadas com base no valor de uma ou mais colunas no MySQL.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *