Com gestiona la consulta MySQL les dades duplicades?Filtreu per eliminar la declaració de dades duplicades

MySQLCom gestionen les consultes dades duplicades?Filtreu per eliminar la declaració de dades duplicades

MySQL Tractament de dades duplicades

Pot haver-hi registres duplicats en algunes taules de dades de MySQL. En alguns casos, permetem l'existència de dades duplicades, però de vegades també hem d'eliminar aquestes dades duplicades.

En aquest capítol, presentarem com evitar dades duplicades a la taula de dades i com eliminar les dades duplicades a la taula de dades.


Eviteu dades duplicades a les taules

Podeu establir el camp especificat a la taula de dades MySQL com a CLAU PRIMÀRIA o ÚNIC (únic) Índex per garantir la singularitat de les dades.

Provem un exemple: no hi ha índexs ni claus primàries a la taula següent, de manera que la taula permet diversos registres duplicats.

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

Si voleu establir els camps first_name i last_name a la taula, les dades no es poden repetir, podeu configurar el mode de clau primària doble per establir la singularitat de les dades. Si configureu la clau primària doble, el valor predeterminat d'aquesta clau no pot ser NULL, però es pot establir en NOT NULL.Com segueix:

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 establim un índex únic, en inserir dades duplicades, la instrucció SQL no s'executarà correctament i generarà un error.

La diferència entre INSERT IGNORE INTO i INSERT INTO és que INSERT IGNORE ignora les dades que ja existeixen a la base de dades. Si no hi ha dades a la base de dades, s'inserirà dades noves i, si hi ha dades, s'ometrà aquestes dades.D'aquesta manera, es poden preservar les dades existents a la base de dades i es pot aconseguir el propòsit d'inserir dades al buit.

L'exemple següent utilitza INSERT IGNORE INTO, que s'executa sense errors i sense inserir dades duplicades a la taula de dades:

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 Quan s'insereixen dades, un cop establerta la unicitat del registre, si s'insereixen dades duplicades, no es retornarà cap error, però només es retornarà un avís.I REPLACE INTO a Si hi ha un registre principal o únic, primer se suprimirà.Insereix un registre nou.

Una altra manera d'establir la singularitat de les vostres dades és afegir un índex ÚNIC com aquest:

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

Dades duplicades estadístiques

A continuació comptarem el nombre de registres duplicats de first_name i last_name a la taula:

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

La instrucció de consulta anterior retornarà el nombre de registres duplicats a la taula person_tbl.En general, per consultar valors duplicats, feu el següent:

  • Determineu quina columna conté possibles valors duplicats.
  • Utilitzeu COUNT(*) a la llista de selecció de columnes per llistar aquestes columnes.
  • Columnes enumerades a la clàusula GROUP BY.
  • La clàusula HAVING estableix el nombre de repeticions superior a 1.

filtra les dades duplicades

Si necessiteu llegir dades úniques, podeu utilitzar la paraula clau DISTINCT a la instrucció SELECT per filtrar les dades duplicades.

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

També podeu utilitzar GROUP BY per llegir dades úniques d'una taula:

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

dades deduplicades

Si voleu suprimir dades duplicades a la taula de dades, podeu utilitzar la següent instrucció 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;

Per descomptat, també podeu afegir INDEX (índex) i PRIMAY KEY (clau primària) a la taula de dades per eliminar els registres duplicats de la taula.Mètodes com a continuació:

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

Bloc d'Hope Chen Weiliang ( https://www.chenweiliang.com/ ) compartit "Com consulta MySQL i gestiona les dades duplicades?Declaracions de filtratge i deduplicació" us ajudarà.

Benvingut a compartir l'enllaç d'aquest article:https://www.chenweiliang.com/cwl-499.html

Benvingut al canal de Telegram del bloc de Chen Weiliang per rebre les últimes actualitzacions!

🔔 Sigues el primer a obtenir la valuosa "Guia d'ús de l'eina de màrqueting de continguts de ChatGPT" al directori principal del canal! 🌟
📚 Aquesta guia té un gran valor, 🌟Aquesta és una oportunitat rara, no la perdis! ⏰⌛💨
Comparteix i m'agrada si t'agrada!
Els vostres likes i compartir són la nostra motivació contínua!

 

发表 评论

La vostra adreça de correu electrònic no es publicarà. S'utilitzen els camps obligatoris * 标注

desplaçar-se a dalt