Cum gestionează interogarea MySQL datele duplicate?Filtrați pentru a elimina extrasul de date duplicat

MySQLCum gestionează interogările datele duplicate?Filtrați pentru a elimina extrasul de date duplicat

MySQL Gestionarea datelor duplicate

Pot exista înregistrări duplicate în unele tabele de date MySQL.În unele cazuri, permitem existența datelor duplicate, dar uneori trebuie să ștergem și aceste date duplicate.

În acest capitol, vom prezenta cum să prevenim datele duplicate în tabelul de date și cum să ștergeți datele duplicate din tabelul de date.


Preveniți duplicarea datelor în tabele

Puteți seta câmpul specificat în tabelul de date MySQL ca CHEIA PRINCIPALA sau UNIC (unic) Index pentru a asigura unicitatea datelor.

Să încercăm un exemplu: nu există indici și chei primare în tabelul de mai jos, așa că tabelul permite mai multe înregistrări duplicat.

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

Dacă doriți să setați câmpurile first_name și last_name din tabel, datele nu pot fi repetate, puteți seta modul cheie primară dublă pentru a seta unicitatea datelor. Dacă setați cheia primară dublă, valoarea implicită a acelei chei nu poate fi NULL, dar poate fi setat la NOT NULL.După cum urmează:

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

Dacă setăm un index unic, atunci când inserăm date duplicate, instrucțiunea SQL nu se va executa cu succes și va genera o eroare.

Diferența dintre INSERT IGNORE INTO și INSERT INTO este că INSERT IGNORE ignoră datele care există deja în baza de date. Dacă nu există date în baza de date, va insera date noi, iar dacă există date, va omite aceste date.În acest fel, datele existente în baza de date pot fi păstrate, iar scopul inserării datelor în gol poate fi atins.

Următorul exemplu utilizează INSERT IGNORE INTO, care se execută fără eroare și nu inserează date duplicat în tabelul de date:

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 La inserarea datelor, după setarea unicității înregistrării, dacă sunt introduse date duplicat, nu va fi returnată nicio eroare, ci va fi returnat doar un avertisment.Și REPLACE INTO dacă există o înregistrare primară sau unică, ștergeți-o mai întâi.Introduceți o înregistrare nouă.

O altă modalitate de a seta unicitatea datelor dvs. este să adăugați un index UNIC ca acesta:

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

Statisticile dublează datele

Mai jos vom număra numărul de înregistrări duplicate ale prenumelui și prenumelui din tabel:

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

Declarația de interogare de mai sus va returna numărul de înregistrări duplicat din tabelul person_tbl.În general, pentru a căuta valori duplicate, procedați în felul următor:

  • Determinați ce coloană conține posibile valori duplicate.
  • Utilizați COUNT(*) în lista de selectare a coloanelor pentru a lista acele coloane.
  • Coloanele listate în clauza GROUP BY.
  • Clauza HAVING stabilește un număr de repetări mai mare decât 1.

filtrați datele duplicate

Dacă trebuie să citiți date unice, puteți utiliza cuvântul cheie DISTINCT din instrucțiunea SELECT pentru a filtra datele duplicate.

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

De asemenea, puteți utiliza GROUP BY pentru a citi date unice dintr-un tabel:

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

deduplicarea datelor

Dacă doriți să ștergeți datele duplicate din tabelul de date, puteți utiliza următoarea instrucțiune 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;

Desigur, puteți adăuga, de asemenea, INDEX (index) și CHEIE PRIMAY (cheie primară) în tabelul de date pentru a șterge înregistrările duplicate din tabel.Metode ca mai jos:

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

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) a distribuit „Cum interogează MySQL și gestionează datele duplicate?Declarațiile de filtrare și deduplicare” vă vor ajuta.

Bine ați venit să distribuiți linkul acestui articol:https://www.chenweiliang.com/cwl-499.html

Bun venit pe canalul Telegram al blogului lui Chen Weiliang pentru a primi cele mai recente actualizări!

🔔 Fii primul care primește valorosul „Ghid de utilizare a instrumentului AI pentru marketing de conținut ChatGPT” în directorul de top al canalului! 🌟
📚 Acest ghid conține o valoare uriașă, 🌟Aceasta este o oportunitate rară, nu o ratați! ⏰⌛💨
Distribuie si da like daca iti place!
Partajarea și like-urile tale sunt motivația noastră continuă!

 

发表 评论

Adresa ta de email nu va fi publicată. Sunt utilizate câmpurile obligatorii * Eticheta

derulați în sus