Kako MySQL upit obrađuje duple podatke?Filter za uklanjanje dvostrukih izjava podataka

MySQLKako upiti obrađuju duple podatke?Filter za uklanjanje dvostrukih izjava podataka

MySQL Rukovanje dupliciranim podacima

U nekim MySQL podatkovnim tablicama mogu postojati dvostruki zapisi. U nekim slučajevima dopuštamo postojanje dvostrukih podataka, ali ponekad moramo i izbrisati te duple podatke.

U ovom poglavlju ćemo vam predstaviti kako spriječiti duple podatke u podatkovnoj tablici i kako izbrisati duple podatke u podatkovnoj tablici.


Spriječite duple podatke u tablicama

Navedeno polje u podatkovnoj tablici MySQL možete postaviti kao GLAVNI KLJUČ ili UNIQUE (jedinstven) Indeks kako bi se osigurala jedinstvenost podataka.

Pokušajmo s primjerom: u donjoj tablici nema indeksa i primarnih ključeva, tako da tablica dopušta više dvostrukih zapisa.

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

Ako želite postaviti polja first_name i last_name u tablici, podaci se ne mogu ponavljati, možete postaviti način dvostrukog primarnog ključa za postavljanje jedinstvenosti podataka. Ako postavite dvostruki primarni ključ, zadana vrijednost tog ključa ne može biti NULL, ali se može postaviti na NOT NULL.Kako slijedi:

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

Ako postavimo jedinstveni indeks, tada se prilikom umetanja duplikata podataka SQL naredba neće uspjeti uspješno izvršiti i javit će se pogreška.

Razlika između INSERT IGNORE INTO i INSERT INTO je u tome što INSERT IGNORE zanemaruje podatke koji već postoje u bazi.Ako nema podataka u bazi, umetnut će nove podatke, a ako ima podataka, preskočit će te podatke.Na taj način se mogu sačuvati postojeći podaci u bazi, te postići svrha umetanja podataka u prazninu.

Sljedeći primjer koristi INSERT IGNORE INTO, koji se izvršava bez pogreške i ne umeće duple podatke u podatkovnu tablicu:

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 Prilikom umetanja podataka, nakon postavljanja jedinstvenosti zapisa, ako se umetnu dupli podaci, neće biti vraćena pogreška, već će se vratiti samo upozorenje.I REPLACE INTO u ako postoji primarni ili jedinstveni zapis, prvo ga izbrišite.Umetnite novi zapis.

Drugi način da postavite jedinstvenost svojih podataka je dodavanje JEDINSTVENOG indeksa poput ovog:

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

Statistika duplicira podatke

U nastavku ćemo izbrojati broj dvostrukih zapisa imena i prezimena u tablici:

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

Gornja izjava upita vratit će broj dvostrukih zapisa u tablici person_tbl.Općenito, za traženje dupliciranih vrijednosti učinite sljedeće:

  • Odredite koji stupac sadrži moguće duplicirane vrijednosti.
  • Upotrijebite COUNT(*) na popisu za odabir stupaca za popis tih stupaca.
  • Stupci navedeni u klauzuli GROUP BY.
  • Klauzula HAVING postavlja broj ponavljanja veći od 1.

filtrirati duple podatke

Ako trebate pročitati jedinstvene podatke, možete koristiti ključnu riječ DISTINCT u izjavi SELECT za filtriranje duplih podataka.

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

Također možete koristiti GROUP BY za čitanje jedinstvenih podataka iz tablice:

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

deduplicirati podatke

Ako želite izbrisati duple podatke u podatkovnoj tablici, možete koristiti sljedeću SQL naredbu:

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;

Naravno, također možete dodati INDEX (indeks) i PRIMAY KEY (primarni ključ) u podatkovnu tablicu kako biste izbrisali duple zapise u tablici.Metode kao u nastavku:

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

Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) podijelio je "Kako MySQL postavlja upite i rukuje dupliciranim podacima?Izjave o filtriranju i deduplikaciji" pomoći će vam.

Dobrodošli da podijelite vezu ovog članka:https://www.chenweiliang.com/cwl-499.html

Dobro došli na Telegram kanal Chen Weiliangovog bloga da dobijete najnovija ažuriranja!

🔔 Budite prvi koji će dobiti vrijedan "Vodič za korištenje AI alata za marketing sadržaja ChatGPT" u direktoriju na vrhu kanala! 🌟
📚 Ovaj vodič ima veliku vrijednost, 🌟 Ovo je rijetka prilika, nemojte je propustiti! ⏰⌛💨
Podijelite i lajkajte ako vam se sviđa!
Vaše dijeljenje i lajkovi naša su stalna motivacija!

 

发表 评论

Vaša email adresa neće biti objavljena. Koriste se obavezna polja * Označiti

pomaknite se na vrh