Hogyan kezeli a MySQL lekérdezés az ismétlődő adatokat?Szűrés az ismétlődő adatkimutatás eltávolításához

MySQLHogyan kezelik a lekérdezések az ismétlődő adatokat?Szűrés az ismétlődő adatkimutatás eltávolításához

MySQL Ismétlődő adatok kezelése

Egyes MySQL adattáblákban előfordulhatnak ismétlődő rekordok, bizonyos esetekben megengedjük az ismétlődő adatok létezését, de néha törölnünk is kell ezeket a duplikált adatokat.

Ebben a fejezetben bemutatjuk, hogyan lehet megakadályozni, hogy az adattáblában duplikáljanak az adatokat, és hogyan törölhetőek az adattáblából a duplikált adatok.


Megakadályozza az adatok megkettőzését a táblázatokban

A MySQL adattáblában megadott mezőt a következőképpen állíthatja be ELSŐDLEGES KULCS vagy EGYEDI (egyedi) Index az adatok egyediségének biztosítására.

Próbáljunk meg egy példát: Az alábbi táblázatban nincsenek indexek és elsődleges kulcsok, így a tábla több ismétlődő rekordot is engedélyez.

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

Ha a táblában az utónév és a vezetéknév mezőket szeretné beállítani, az adatok nem ismételhetők meg, az adatok egyediségének beállításához beállíthatja a kettős elsődleges kulcs módot, ha a kettős elsődleges kulcsot, akkor az adott kulcs alapértelmezett értéke nem lehet NULL, de beállítható NOT NULL-ra.Alábbiak szerint:

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

Ha egyedi indexet állítunk be, akkor duplikált adatok beszúrásakor az SQL utasítás végrehajtása sikertelen lesz, és hibát dob.

Az INSERT IGNORE INTO és az INSERT INTO között az a különbség, hogy az INSERT IGNORE figyelmen kívül hagyja az adatbázisban már meglévő adatokat, ha nincs adat az adatbázisban, akkor új adatot szúr be, ha pedig van, akkor ezeket az adatokat kihagyja.Ezáltal az adatbázisban meglévő adatok megőrizhetők, a résbe való adatbeszúrás célja elérhető.

A következő példa az INSERT IGNORE INTO parancsot használja, amely hiba nélkül fut le, és nem szúr be duplikált adatokat az adattáblába:

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 Adatbeszúráskor a rekord egyediségének beállítása után duplikált adat beszúrása esetén nem ad vissza hibát, hanem csak figyelmeztetést ad vissza.És REPLACE INTO -ba, ha van elsődleges vagy egyedi rekord, először törölje azt.Szúrjon be egy új rekordot.

Az adatok egyediségének beállításának másik módja egy EGYEDI index hozzáadása a következőhöz hasonló:

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

A statisztikák duplikálják az adatokat

Az alábbiakban megszámoljuk a keresztnév és vezetéknév ismétlődő rekordok számát a táblázatban:

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

A fenti lekérdezési utasítás a person_tbl táblában található ismétlődő rekordok számát adja vissza.Általában az ismétlődő értékek lekérdezéséhez tegye a következőket:

  • Határozza meg, melyik oszlop tartalmazza a lehetséges ismétlődő értékeket.
  • Az oszlopok listázásához használja a COUNT(*) gombot az oszlopkiválasztó listában.
  • A GROUP BY záradékban felsorolt ​​oszlopok.
  • A HAVING záradék 1-nél nagyobb ismétlések számát állítja be.

szűrje ki az ismétlődő adatokat

Ha egyedi adatokat kell beolvasnia, használhatja a DISTINCT kulcsszót a SELECT utasításban az ismétlődő adatok szűrésére.

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

A GROUP BY segítségével egyedi adatokat is kiolvashat egy táblázatból:

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

deduplikált adatok

Ha törölni szeretné az adattáblázat ismétlődő adatait, használja a következő SQL utasítást:

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;

Természetesen az INDEX (index) és PRIMAY KEY (elsődleges kulcs) is hozzáadható az adattáblázathoz, hogy törölje a tábla ismétlődő rekordjait.Az alábbi módszerek:

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

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) megosztott "Hogyan kérdezi le és kezeli a MySQL a duplikált adatokat?Szűrési és duplikációs nyilatkozatok" segítségével.

Üdvözöljük a cikk linkjének megosztásában:https://www.chenweiliang.com/cwl-499.html

Üdvözöljük Chen Weiliang blogjának Telegram csatornáján, hogy értesüljön a legfrissebb hírekről!

🔔 Legyen Ön az első, aki megkapja az értékes "ChatGPT Content Marketing AI Tool használati útmutatót" a csatorna felső könyvtárában! 🌟
📚 Ez az útmutató hatalmas értéket tartalmaz, 🌟 Ritka lehetőség ez, ne hagyd ki! ⏰⌛💨
Oszd meg és lájkold, ha tetszik!
Az Ön megosztása és lájkja folyamatos motivációnk!

 

发表 评论

Az e-mail címed nem kerül nyilvánosságra. A kötelező mezőket használjuk * Címke

görgess a tetejére