Miten MySQL-kysely käsittelee päällekkäisiä tietoja?Suodata poistaaksesi päällekkäiset tiedot

MySQLMiten kyselyt käsittelevät päällekkäisiä tietoja?Suodata poistaaksesi päällekkäiset tiedot

MySQL Päällekkäisten tietojen käsittely

Joissakin MySQL-tietotaulukoissa voi olla päällekkäisiä tietueita, joissakin tapauksissa sallimme päällekkäisten tietojen olemassaolon, mutta joskus meidän on myös poistettava nämä päällekkäiset tiedot.

Tässä luvussa esitellään kuinka estetään päällekkäiset tiedot tietotaulukossa ja kuinka poistetaan päällekkäiset tiedot tietotaulukosta.


Estä päällekkäiset tiedot taulukoissa

Voit asettaa määritetyn kentän MySQL-tietotaulukossa muodossa PÄÄAVAIN tai AINUTLAATUINEN (ainutlaatuinen) Hakemisto varmistaa tietojen ainutlaatuisuuden.

Kokeillaan esimerkkiä: Alla olevassa taulukossa ei ole indeksejä ja ensisijaisia ​​avaimia, joten taulukko sallii useita tietueiden kaksoiskappaleita.

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

Jos haluat asettaa taulukon kentät etu_nimi ja sukunimi, tietoja ei voi toistaa, voit asettaa tietojen yksilöllisyyden määrittämään kaksoisprimaariavaimen tilan. Jos asetat kaksoisprimaariavaimen, sen oletusarvo ei voi olla NULL, mutta se voidaan asettaa arvoon NOT NULL.Seuraavasti:

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

Jos asetamme yksilöllisen indeksin, kun lisäät päällekkäisiä tietoja, SQL-lause ei toimi onnistuneesti ja antaa virheen.

Ero INSERT IGNORE INTO:n ja INSERT INTO:n välillä on se, että INSERT IGNORE jättää huomioimatta tietokannassa jo olevat tiedot.Jos tietokannassa ei ole tietoja, se lisää uusia tietoja ja jos tietoja on, se ohittaa nämä tiedot.Tällä tavalla voidaan säilyttää tietokannan olemassa oleva tieto ja saavuttaa tiedon lisäämisen tarkoitus aukkoon.

Seuraava esimerkki käyttää INSERT IGNORE INTO -komentoa, joka suoritetaan ilman virhettä eikä lisää päällekkäisiä tietoja tietotaulukkoon:

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 Kun tietoja lisätään, tietueen yksilöllisyyden asettamisen jälkeen, jos päällekkäisiä tietoja lisätään, virhettä ei palauteta, vaan palautetaan vain varoitus.Ja REPLACE INTO, jos on ensisijainen tai yksilöllinen tietue, poista se ensin.Lisää uusi tietue.

Toinen tapa määrittää tietojesi ainutlaatuisuus on lisätä AINUTLAATUINEN indeksi seuraavasti:

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

Tilastot päällekkäisiä tietoja

Alla laskemme taulukon etu_nimi ja sukunimi päällekkäisten tietueiden lukumäärän:

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

Yllä oleva kyselylause palauttaa henkilö_tbl-taulukon tietueiden kaksoiskappaleiden määrän.Yleensä, jos haluat etsiä päällekkäisiä arvoja, toimi seuraavasti:

  • Määritä, mikä sarake sisältää mahdollisia päällekkäisiä arvoja.
  • Käytä sarakkeiden valintaluettelossa COUNT(*) luetellaksesi kyseiset sarakkeet.
  • GROUP BY -lauseessa luetellut sarakkeet.
  • HAVING-lause asettaa toistojen lukumäärän suuremmiksi kuin 1.

suodattaa päällekkäiset tiedot

Jos sinun on luettava yksilöllisiä tietoja, voit käyttää DISTINCT-avainsanaa SELECT-käskyssä suodattaaksesi päällekkäisiä tietoja.

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

Voit myös käyttää GROUP BY:tä yksilöllisten tietojen lukemiseen taulukosta:

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

poista tietojen kaksoiskappaleet

Jos haluat poistaa päällekkäisiä tietoja tietotaulukosta, voit käyttää seuraavaa SQL-lausetta:

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;

Tietysti voit myös lisätä tietotaulukkoon INDEX (indeksi) ja PRIMAY KEY (ensisijainen avain) poistaaksesi taulukon tietueiden kaksoiskappaleet.Alla olevat menetelmät:

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

Hope Chen Weiliang -blogi ( https://www.chenweiliang.com/ ) jaettu "Kuinka MySQL kyselee ja käsittelee päällekkäisiä tietoja?Suodatus- ja kopiointilausunnot" auttaa sinua.

Tervetuloa jakamaan tämän artikkelin linkki:https://www.chenweiliang.com/cwl-499.html

Tervetuloa Chen Weiliangin blogin Telegram-kanavalle saadaksesi viimeisimmät päivitykset!

🔔 Saat ensimmäisenä arvokkaan "ChatGPT Content Marketing AI Toolin käyttöoppaan" kanavan ylähakemistoon! 🌟
📚 Tämä opas sisältää valtavasti arvoa, 🌟Tämä on harvinainen tilaisuus, älä missaa sitä! ⏰⌛💨
Jaa ja tykkää jos tykkäät!
Jakamasi ja tykkäyksesi ovat jatkuva motivaatiomme!

 

发表 评论

Sähköpostiosoitettasi ei julkaista. 必填 项 已 用 * 标注

Vieritä ylös