In che modo la query MySQL gestisce i dati duplicati?Filtra per rimuovere la dichiarazione di dati duplicata

MySQLIn che modo le query gestiscono i dati duplicati?Filtra per rimuovere la dichiarazione di dati duplicata

MySQL Gestione dei dati duplicati

Potrebbero esserci record duplicati in alcune tabelle di dati MySQL. In alcuni casi, consentiamo l'esistenza di dati duplicati, ma a volte dobbiamo anche eliminare questi dati duplicati.

In questo capitolo introdurremo come prevenire la duplicazione dei dati nella tabella dei dati e come eliminare i dati duplicati nella tabella dei dati.


Impedisci la duplicazione dei dati nelle tabelle

È possibile impostare il campo specificato nella tabella dati MySQL come CHIAVE PRIMARIA o UNICO (unico) Indice per garantire l'unicità dei dati.

Proviamo con un esempio: non ci sono indici e chiavi primarie nella tabella seguente, quindi la tabella consente più record duplicati.

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

Se si desidera impostare i campi nome e cognome nella tabella, i dati non possono essere ripetuti, è possibile impostare la modalità doppia chiave primaria per impostare l'unicità dei dati.Se si imposta la doppia chiave primaria, il valore predefinito di quella chiave non può essere NULL, ma può essere impostato su NOT NULL.Come 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 impostiamo un indice univoco, quando inseriamo dati duplicati, l'istruzione SQL non verrà eseguita correttamente e genererà un errore.

La differenza tra INSERT IGNORE INTO e INSERT INTO è che INSERT IGNORE ignora i dati che già esistono nel database.Se non ci sono dati nel database, inserirà nuovi dati e se ci sono dati, salterà questi dati.In questo modo è possibile preservare i dati esistenti nel database e raggiungere lo scopo di inserire i dati nel gap.

L'esempio seguente utilizza INSERT IGNORE INTO, che viene eseguito senza errori e non inserisce dati duplicati nella tabella dati:

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 IGNORA IN Quando si inseriscono i dati, dopo aver impostato l'unicità del record, se si inseriscono dati duplicati, non verrà restituito alcun errore, ma verrà restituito solo un avviso.E REPLACE INTO in se esiste un record primario o univoco, eliminalo prima.Inserisci un nuovo record.

Un altro modo per impostare l'unicità dei tuoi dati è aggiungere un indice UNICO come questo:

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

Le statistiche duplicano i dati

Di seguito conteremo il numero di record duplicati di nome e cognome nella tabella:

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

L'istruzione di query precedente restituirà il numero di record duplicati nella tabella person_tbl.In generale, per richiedere valori duplicati, procedere come segue:

  • Determina quale colonna contiene possibili valori duplicati.
  • Utilizzare COUNT(*) nell'elenco di selezione delle colonne per elencare quelle colonne.
  • Colonne elencate nella clausola GROUP BY.
  • La clausola HAVING imposta il numero di ripetizioni maggiore di 1.

filtrare i dati duplicati

Se è necessario leggere dati univoci, è possibile utilizzare la parola chiave DISTINCT nell'istruzione SELECT per filtrare i dati duplicati.

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

Puoi anche utilizzare GROUP BY per leggere dati univoci da una tabella:

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

deduplicare i dati

Se si desidera eliminare i dati duplicati nella tabella dei dati, è possibile utilizzare la seguente istruzione 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;

Naturalmente, puoi anche aggiungere INDEX (indice) e PRIMAY KEY (chiave primaria) nella tabella dei dati per eliminare i record duplicati nella tabella.Metodi come di seguito:

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

Speranza Chen Weiliang Blog ( https://www.chenweiliang.com/ ) condiviso "In che modo MySQL esegue query e gestisce i dati duplicati?Le dichiarazioni di filtraggio e deduplicazione" ti aiuteranno.

Benvenuti a condividere il link di questo articolo:https://www.chenweiliang.com/cwl-499.html

Benvenuto nel canale Telegram del blog di Chen Weiliang per ricevere gli ultimi aggiornamenti!

🔔 Sii il primo a ricevere la preziosa "Guida all'utilizzo dello strumento AI di marketing dei contenuti ChatGPT" nella directory principale del canale! 🌟
📚 Questa guida contiene un valore enorme, 🌟Questa è un'opportunità rara, non perderla! ⏰⌛💨
Condividi e metti mi piace se ti va!
La tua condivisione e i tuoi like sono la nostra continua motivazione!

 

发表 评论

L'indirizzo email non verrà pubblicato. 必填 项 已 用 * 标注

滚动 到 顶部