Como a consulta do MySQL lida com dados duplicados?Filtre para remover a declaração de dados duplicada

MySQLComo as consultas lidam com dados duplicados?Filtre para remover a declaração de dados duplicada

MySQL Manipulando dados duplicados

Pode haver registros duplicados em algumas tabelas de dados do MySQL. Em alguns casos, permitimos a existência de dados duplicados, mas às vezes também precisamos excluir esses dados duplicados.

Neste capítulo, apresentaremos como evitar dados duplicados na tabela de dados e como excluir os dados duplicados na tabela de dados.


Evitar dados duplicados em tabelas

Você pode definir o campo especificado na tabela de dados MySQL como CHAVE PRIMÁRIA 或者 ÚNICO (único) Índice para garantir a exclusividade dos dados.

Vamos tentar um exemplo: Não há índices e chaves primárias na tabela abaixo, então a tabela permite vários registros duplicados.

CREATE TABLE person_tbl
(
    first_name CHAR(20),
    last_name CHAR(20),
    sex CHAR(10)
);

Se você deseja definir os campos first_name e last_name na tabela, os dados não podem ser repetidos, você pode definir o modo de chave primária dupla para definir a exclusividade dos dados. Se você definir a chave primária dupla, o valor padrão dessa chave não pode ser NULL, mas pode ser definido como NOT NULL.Do seguinte modo:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);

Se definirmos um índice exclusivo, ao inserir dados duplicados, a instrução SQL não será executada com êxito e gerará um erro.

A diferença entre INSERT IGNORE INTO e INSERT INTO é que INSERT IGNORE ignora os dados que já existem no banco de dados, se não houver dados no banco de dados, ele inserirá novos dados e, se houver, ignorará esses dados.Dessa forma, os dados existentes no banco de dados podem ser preservados e o objetivo de inserir dados na lacuna pode ser alcançado.

O exemplo a seguir usa INSERT IGNORE INTO, que é executado sem erros e não insere dados duplicados na tabela de dados:

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

INSERT IGNORE INTO Ao inserir dados, após definida a unicidade do registro, se forem inseridos dados duplicados, nenhum erro será retornado, mas apenas um aviso será retornado.E REPLACE INTO se houver um registro primário ou exclusivo, exclua-o primeiro.Insira um novo registro.

Outra maneira de definir a exclusividade de seus dados é adicionar um índice UNIQUE como este:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

Dados duplicados de estatísticas

Abaixo contaremos o número de registros duplicados de first_name e last_name na tabela:

mysql> SELECT COUNT(*) as repetitions, last_name, first_name
    -> FROM person_tbl
    -> GROUP BY last_name, first_name
    -> HAVING repetitions > 1;

A instrução de consulta acima retornará o número de registros duplicados na tabela person_tbl.Em geral, para consultar valores duplicados, faça o seguinte:

  • Determine qual coluna contém possíveis valores duplicados.
  • Use COUNT(*) na lista de seleção de colunas para listar essas colunas.
  • Colunas listadas na cláusula GROUP BY.
  • A cláusula HAVING define o número de repetições maior que 1.

filtrar dados duplicados

Se você precisar ler dados exclusivos, poderá usar a palavra-chave DISTINCT na instrução SELECT para filtrar dados duplicados.

mysql> SELECT DISTINCT last_name, first_name
    -> FROM person_tbl;

Você também pode usar GROUP BY para ler dados exclusivos de uma tabela:

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

dados desduplicados

Se você deseja excluir dados duplicados na tabela de dados, pode usar a seguinte instrução SQL:

mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
    ->                  FROM person_tbl;
    ->                  GROUP BY (last_name, first_name, sex);
mysql> DROP TABLE person_tbl;
mysql> ALTER TABLE tmp RENAME TO person_tbl;

Claro, você também pode adicionar INDEX (índice) e PRIMAY KEY (chave primária) na tabela de dados para excluir registros duplicados na tabela.Métodos como abaixo:

mysql> ALTER IGNORE TABLE person_tbl
    -> ADD PRIMARY KEY (last_name, first_name);

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) compartilhado "Como o MySQL consulta e lida com dados duplicados?Declarações de filtragem e desduplicação" irão ajudá-lo.

Bem-vindo a compartilhar o link deste artigo:https://www.chenweiliang.com/cwl-499.html

Bem-vindo ao canal Telegram do blog de Chen Weiliang para receber as últimas atualizações!

🔔 Seja o primeiro a obter o valioso "Guia de uso da ferramenta de IA de marketing de conteúdo ChatGPT" no diretório superior do canal! 🌟
📚 Este guia contém um valor enorme, 🌟Esta é uma oportunidade rara, não perca! ⏰⌛💨
Compartilhe e curta se gostar!
Seus compartilhamentos e curtidas são nossa motivação contínua!

 

发表 评论

Seu endereço de e-mail não será publicado. 必填 项 已 用 * 标注

滚动 到 顶部