Como manexa a consulta MySQL os datos duplicados?Filtrar para eliminar declaración de datos duplicados

MySQLComo manexan as consultas os datos duplicados?Filtrar para eliminar declaración de datos duplicados

MySQL Manexo de datos duplicados

Pode haber rexistros duplicados nalgunhas táboas de datos de MySQL. Nalgúns casos, permitimos a existencia de datos duplicados, pero ás veces tamén necesitamos eliminar estes datos duplicados.

Neste capítulo, presentaremos como evitar datos duplicados na táboa de datos e como eliminar os datos duplicados na táboa de datos.


Evitar datos duplicados nas táboas

Pode establecer o campo especificado na táboa de datos MySQL como CLAVE PRIMARIA ou ÚNICO (único) Índice para garantir a unicidade dos datos.

Probemos un exemplo: non hai índices nin chaves primarias na táboa seguinte, polo que a táboa permite varios rexistros duplicados.

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

Se queres establecer os campos first_name e last_name na táboa, os datos non se poden repetir, podes configurar o modo de chave principal dobre para definir a singularidade dos datos. Se estableces a chave principal dobre, o valor predeterminado desa chave non pode ser NULL, pero pódese definir como NOT NULL.Como segue:

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 establecemos un índice único, ao inserir datos duplicados, a instrución SQL non se executará correctamente e xerará un erro.

A diferenza entre INSERT IGNORE INTO e INSERT INTO é que INSERT IGNORE ignora os datos que xa existen na base de datos. Se non hai datos na base de datos, inserirá novos datos e, se hai datos, omitirá estes datos.Deste xeito, pódense conservar os datos existentes na base de datos e conseguirse a finalidade de inserir datos no oco.

O seguinte exemplo usa INSERT IGNORE INTO, que se executa sen erros e non insire datos duplicados na táboa de datos:

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 datos, despois de definir a unicidade do rexistro, se se insire datos duplicados, non se devolverá ningún erro, pero só se devolverá un aviso.E REPLACE INTO se hai un rexistro principal ou único, elimínao primeiro.Insira un novo rexistro.

Outra forma de establecer a singularidade dos teus datos é engadir un índice ÚNICO 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)
);

Datos duplicados estatísticos

A continuación contaremos o número de rexistros duplicados de nome e apelido na táboa:

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

A instrución de consulta anterior devolverá o número de rexistros duplicados na táboa person_tbl.En xeral, para consultar os valores duplicados, faga o seguinte:

  • Determine que columna contén posibles valores duplicados.
  • Use COUNT(*) na lista de selección de columnas para listar esas columnas.
  • Columnas listadas na cláusula GROUP BY.
  • A cláusula HAVING establece o número de repeticións superior a 1.

filtrar datos duplicados

Se precisa ler datos únicos, pode utilizar a palabra clave DISTINCT na instrución SELECT para filtrar os datos duplicados.

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

Tamén podes usar GROUP BY para ler datos únicos dunha táboa:

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

datos deduplicados

Se queres eliminar datos duplicados na táboa de datos, podes usar a seguinte instrución 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;

Por suposto, tamén pode engadir INDEX (índice) e PRIMAY KEY (chave primaria) na táboa de datos para eliminar rexistros duplicados da táboa.Métodos como a continuación:

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

Blog de Hope Chen Weiliang ( https://www.chenweiliang.com/ ) compartiu "Como consulta MySQL e manexa os datos duplicados?Declaracións de filtrado e deduplicación" axudarache.

Benvido a compartir a ligazón deste artigo:https://www.chenweiliang.com/cwl-499.html

Benvido á canle de Telegram do blog de Chen Weiliang para recibir as últimas actualizacións.

🔔 Sexa o primeiro en obter a valiosa "Guía de uso da ferramenta de intelixencia artificial de marketing de contidos de ChatGPT" no directorio principal da canle. 🌟
📚 Esta guía contén un gran valor, 🌟Esta é unha oportunidade rara, non a perdas! ⏰⌛💨
Comparte e da like se che gusta!
O teu compartir e gústame son a nosa motivación continua!

 

发表 评论

O seu enderezo de correo electrónico non se publicará. Utilízanse os campos obrigatorios * Etiqueta

desprázate cara arriba