Kako poizvedba MySQL obravnava podvojene podatke?Filter za odstranitev podvojenih podatkovnih izjav

MySQLKako poizvedbe obravnavajo podvojene podatke?Filter za odstranitev podvojenih podatkovnih izjav

MySQL Ravnanje s podvojenimi podatki

V nekaterih podatkovnih tabelah MySQL so lahko podvojeni zapisi.V nekaterih primerih dovolimo obstoj podvojenih podatkov, včasih pa moramo te podvojene podatke tudi izbrisati.

V tem poglavju bomo predstavili, kako preprečiti podvojene podatke v podatkovni tabeli in kako izbrisati podvojene podatke v podatkovni tabeli.


Preprečite podvojene podatke v tabelah

Določeno polje v podatkovni tabeli MySQL lahko nastavite kot PRIMARNI KLJUČ ali UNIKAT (edinstven) Indeks za zagotavljanje edinstvenosti podatkov.

Poskusimo s primerom: v spodnji tabeli ni indeksov in primarnih ključev, zato tabela dovoljuje več podvojenih zapisov.

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

Če želite nastaviti polji first_name in last_name v tabeli, podatkov ni mogoče ponoviti, lahko nastavite način dvojnega primarnega ključa, da nastavite edinstvenost podatkov. Če nastavite dvojni primarni ključ, je privzeta vrednost tega ključa ne more biti NULL, lahko pa se nastavi na NOT NULL.Kot sledi:

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

Če nastavimo enoličen indeks, se pri vstavljanju podvojenih podatkov stavek SQL ne bo uspel uspešno izvesti in vrgel napako.

Razlika med INSERT IGNORE INTO in INSERT INTO je v tem, da INSERT IGNORE ignorira podatke, ki že obstajajo v bazi.Če v bazi ni podatkov, bo vstavil nove podatke, če pa so, jih bo preskočil.Na ta način se lahko ohranijo obstoječi podatki v bazi in doseže namen vnosa podatkov v vrzel.

Naslednji primer uporablja INSERT IGNORE INTO, ki se izvede brez napak in brez vstavljanja podvojenih podatkov v podatkovno tabelo:

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 Pri vstavljanju podatkov, potem ko je nastavljena edinstvenost zapisa, če so vstavljeni podvojeni podatki, ne bo vrnjena nobena napaka, ampak bo vrnjeno le opozorilo.In REPLACE INTO v Če obstaja primarni ali edinstven zapis, bo ta najprej izbrisan.Vstavite nov zapis.

Drug način za nastavitev edinstvenosti vaših podatkov je dodajanje UNIQUE indeksa, kot je ta:

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

Statistični podatki podvojeni

Spodaj bomo prešteli število podvojenih zapisov imena in priimka v tabeli:

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

Zgornji stavek poizvedbe bo vrnil število podvojenih zapisov v tabeli person_tbl.Na splošno za poizvedbo po podvojenih vrednostih naredite naslednje:

  • Ugotovite, kateri stolpec vsebuje možne podvojene vrednosti.
  • Za seznam teh stolpcev uporabite COUNT(*) na seznamu za izbiro stolpcev.
  • Stolpci, navedeni v klavzuli GROUP BY.
  • Klavzula HAVING nastavi število ponovitev, večje od 1.

filtriranje podvojenih podatkov

Če morate prebrati edinstvene podatke, lahko uporabite ključno besedo DISTINCT v stavku SELECT za filtriranje podvojenih podatkov.

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

Za branje edinstvenih podatkov iz tabele lahko uporabite tudi GROUP BY:

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

odstranite podvojene podatke

Če želite izbrisati podvojene podatke v podatkovni tabeli, lahko uporabite naslednji stavek 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;

Seveda lahko dodate tudi INDEX (indeks) in PRIMAY KEY (primarni ključ) v podatkovno tabelo, da izbrišete podvojene zapise v tabeli.Spodaj navedene metode:

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

Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) deli "Kako MySQL poizveduje in obravnava podvojene podatke?Izjave o filtriranju in deduplikaciji vam bodo v pomoč.

Dobrodošli, da delite povezavo tega članka:https://www.chenweiliang.com/cwl-499.html

Dobrodošli na kanalu Telegram spletnega dnevnika Chena Weilianga, kjer boste prejeli najnovejše posodobitve!

🔔 Bodite prvi, ki boste prejeli dragocen »Vodnik za uporabo orodja AI za vsebinski marketing ChatGPT« v zgornjem imeniku kanala! 🌟
📚 Ta vodnik ima ogromno vrednosti, 🌟To je redka priložnost, ne zamudite je! ⏰⌛💨
Delite in všečkajte, če vam je všeč!
Vaše deljenje in všečki so naša stalna motivacija!

 

发表 评论

Vaš e-poštni naslov ne bo objavljen. 必填 项 已 用 * Oznaka

滚动 到 顶部