Hvernig meðhöndlar MySQL fyrirspurn tvítekin gögn?Sía til að fjarlægja tvítekna gagnayfirlýsingu

MySQLHvernig meðhöndla fyrirspurnir tvítekin gögn?Sía til að fjarlægja tvítekna gagnayfirlýsingu

MySQL Meðhöndlun tvítekinna gagna

Það geta verið tvíteknar færslur í sumum MySQL gagnatöflum. Í sumum tilfellum leyfum við tilvist tvítekinna gagna, en stundum þurfum við líka að eyða þessum tvíteknu gögnum.

Í þessum kafla munum við kynna hvernig á að koma í veg fyrir tvítekin gögn í gagnatöflunni og hvernig á að eyða tvíteknum gögnum í gagnatöflunni.


Koma í veg fyrir tvítekin gögn í töflum

Þú getur stillt tilgreindan reit í MySQL gagnatöflunni sem AÐALLYKILL eða EINSTAKUR (einstakt) Vísitala til að tryggja sérstöðu gagna.

Við skulum reyna dæmi: Það eru engar vísitölur og aðallyklar í töflunni hér að neðan, þannig að taflan leyfir margar tvíteknar færslur.

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

Ef þú vilt stilla reitina fornafn og eftirnafn í töflunni er ekki hægt að endurtaka gögnin, þú getur stillt tvöfaldan aðallykilham til að stilla sérstöðu gagnanna. Ef þú stillir tvöfaldan aðallykil er sjálfgefið gildi þess lykils getur ekki verið NULL, en hægt er að stilla það á NOT NULL.Eins og hér segir:

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

Ef við setjum einstaka vísitölu, þá mun SQL staðhæfingin ekki keyra með góðum árangri þegar við setjum afrit af gögnum inn og henda villu.

Munurinn á INSERT IGNORE INTO og INSERT INTO er sá að INSERT IGNORE hunsar þau gögn sem þegar eru til í gagnagrunninum. Ef engin gögn eru í gagnagrunninum mun það setja inn ný gögn og ef það eru gögn mun það sleppa þessum gögnum.Þannig er hægt að varðveita þau gögn sem fyrir eru í gagnagrunninum og ná þeim tilgangi að setja gögn inn í eyðuna.

Eftirfarandi dæmi notar INSERT IGNORE INTO, sem keyrir án villu og setur ekki afrit af gögnum inn í gagnatöfluna:

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 Þegar gögn eru sett inn, eftir að sérstaða færslunnar er stillt, ef tvítekið gögn eru sett inn, verður engin villa skilað, heldur aðeins viðvörun skilað.Og REPLACE INTO inn í ef það er aðal eða einstök skrá, eyða henni fyrst.Settu inn nýja met.

Önnur leið til að stilla sérstöðu gagna þinna er að bæta við EINSTAKRI vísitölu eins og þessari:

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

Tölfræði afrit af gögnum

Hér að neðan munum við telja fjölda tvítekinna skráa um fornafn og eftirnafn í töflunni:

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

Ofangreind fyrirspurnaryfirlýsing mun skila fjölda tvítekinna skráa í person_tbl töflunni.Almennt, til að spyrjast fyrir um tvítekin gildi, gerðu eftirfarandi:

  • Ákvarða hvaða dálkur inniheldur möguleg tvítekin gildi.
  • Notaðu COUNT(*) í dálkvalslistanum til að skrá þá dálka.
  • Dálkar skráðir í GROUP BY ákvæðinu.
  • HAVING-ákvæðið setur fjölda endurtekninga meiri en 1.

sía tvítekin gögn

Ef þú þarft að lesa einstök gögn geturðu notað DISTINCT leitarorðið í SELECT yfirlýsingunni til að sía tvítekin gögn.

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

Þú getur líka notað GROUP BY til að lesa einstök gögn úr töflu:

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

aftvífölduð gögn

Ef þú vilt eyða tvíteknum gögnum í gagnatöflunni geturðu notað eftirfarandi SQL setningu:

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;

Auðvitað geturðu líka bætt við INDEX (vísitölu) og PRIMAY KEY (aðallykill) í gagnatöfluna til að eyða tvíteknum færslum í töflunni.Aðferðir eins og hér að neðan:

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

Hope Chen Weiliang blogg ( https://www.chenweiliang.com/ ) deildi „Hvernig biður MySQL um og meðhöndlar tvítekin gögn?Yfirlýsingar um síun og aftvíföldun“ munu hjálpa þér.

Velkomið að deila tengli þessarar greinar:https://www.chenweiliang.com/cwl-499.html

Velkomin á Telegram rásina á bloggi Chen Weiliang til að fá nýjustu uppfærslurnar!

🔔 Vertu fyrstur til að fá dýrmæta „ChatGPT Content Marketing AI Notkunarleiðbeiningar“ í efstu möppu rásarinnar! 🌟
📚 Þessi handbók inniheldur mikið gildi, 🌟Þetta er sjaldgæft tækifæri, ekki missa af því! ⏰⌛💨
Deildu og likeðu ef þú vilt!
Deiling þín og líkar við eru stöðug hvatning okkar!

 

发表 评论

Netfangið þitt verður ekki birt. Nauðsynlegir reitir eru notaðir * Merkimiði

flettu efst