¿Cómo maneja la consulta MySQL los datos duplicados?Filtrar para eliminar declaración de datos duplicados

MySQL¿Cómo manejan las consultas los datos duplicados?Filtrar para eliminar declaración de datos duplicados

MySQL Manejo de datos duplicados

Puede haber registros duplicados en algunas tablas de datos de MySQL, en algunos casos permitimos la existencia de datos duplicados, pero a veces también necesitamos eliminar estos datos duplicados.

En este capítulo, presentaremos cómo evitar datos duplicados en la tabla de datos y cómo eliminar los datos duplicados en la tabla de datos.


Prevenir datos duplicados en tablas

Puede establecer el campo especificado en la tabla de datos de MySQL como CLAVE PRIMARIA o ÚNICO (único) Índice para garantizar la unicidad de los datos.

Probemos un ejemplo: no hay índices ni claves principales en la siguiente tabla, por lo que la tabla permite múltiples registros duplicados.

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

Si desea configurar los campos first_name y last_name en la tabla, los datos no se pueden repetir, puede configurar el modo de clave principal doble para establecer la unicidad de los datos.Si configura la clave principal doble, el valor predeterminado de esa clave no puede ser NULL, pero se puede establecer en NOT NULL.Como sigue:

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)
);

Si establecemos un índice único, al insertar datos duplicados, la instrucción SQL no se ejecutará correctamente y generará un error.

La diferencia entre INSERT IGNORE INTO e INSERT INTO es que INSERT IGNORE ignora los datos que ya existen en la base de datos, si no hay datos en la base de datos, insertará nuevos datos, y si hay datos, los omitirá.De esta manera, los datos existentes en la base de datos se pueden conservar y se puede lograr el propósito de insertar datos en el espacio vacío.

El siguiente ejemplo usa INSERT IGNORE INTO, que se ejecuta sin errores y no inserta datos duplicados en la tabla 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)

INSERTAR IGNORAR EN Al insertar datos, después de establecer la unicidad del registro, si se insertan datos duplicados, no se devolverá ningún error, solo se devolverá una advertencia.Y REEMPLAZAR EN si hay un registro principal o único, elimínelo primero.Insertar un nuevo registro.

Otra forma de establecer la unicidad de sus datos es agregar 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)
);

Estadísticas de datos duplicados

A continuación contaremos el número de registros duplicados de first_name y last_name en la tabla:

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

La declaración de consulta anterior devolverá el número de registros duplicados en la tabla person_tbl.En general, para consultar valores duplicados, haga lo siguiente:

  • Determine qué columna contiene posibles valores duplicados.
  • Use COUNT(*) en la lista de selección de columnas para listar esas columnas.
  • Columnas enumeradas en la cláusula GROUP BY.
  • La cláusula HAVING establece el número de repeticiones mayor que 1.

filtrar datos duplicados

Si necesita leer datos únicos, puede usar la palabra clave DISTINCT en la declaración SELECT para filtrar datos duplicados.

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

También puede usar GROUP BY para leer datos únicos de una tabla:

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

deduplicar datos

Si desea eliminar datos duplicados en la tabla de datos, puede usar la siguiente instrucció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 supuesto, también puede agregar INDEX (índice) y PRIMAY KEY (clave principal) en la tabla de datos para eliminar registros duplicados en la tabla.Métodos de la siguiente manera:

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

Esperanza Chen Weiliang Blog ( https://www.chenweiliang.com/ ) compartió "¿Cómo consulta MySQL y maneja los datos duplicados?Declaraciones de filtrado y deduplicación" le ayudará.

Bienvenido a compartir el enlace de este artículo:https://www.chenweiliang.com/cwl-499.html

¡Bienvenido al canal de Telegram del blog de Chen Weiliang para obtener las últimas actualizaciones!

🔔 ¡Sea el primero en obtener la valiosa "Guía de uso de la herramienta de inteligencia artificial para marketing de contenidos ChatGPT" en el directorio superior del canal! 🌟
📚 Esta guía contiene un gran valor. 🌟Esta es una oportunidad única, ¡no la pierdas! ⏰⌛💨
¡Comparte y dale me gusta si te gusta!
¡Su compartir y Me gusta son nuestra motivación continua!

 

发表 评论

Su dirección de correo electrónico no será publicada. 项 已 用 * 标注

滚动 到 顶部