Hoe behannelet MySQL-query dûbele gegevens?Filter om dûbele gegevensferklearring te ferwiderjen

MySQLHoe behannelje queries dûbele gegevens?Filter om dûbele gegevensferklearring te ferwiderjen

MySQL It behanneljen fan dûbele gegevens

D'r kinne dûbele records wêze yn guon MySQL-gegevenstabellen. Yn guon gefallen litte wy it bestean fan dûbele gegevens ta, mar soms moatte wy dizze dûbele gegevens ek wiskje.

Yn dit haadstik sille wy yntrodusearje hoe't jo dûbele gegevens yn 'e gegevenstabel kinne foarkomme en hoe't jo de dûbele gegevens yn' e gegevenstabel wiskje.


Foarkom dûbele gegevens yn tabellen

Jo kinne it oantsjutte fjild yn 'e MySQL-gegevenstabel ynstelle as HAADKAAI of UNIEK (unyk) Yndeks om de unykens fan gegevens te garandearjen.

Litte wy in foarbyld besykje: D'r binne gjin yndeksen en primêre kaaien yn 'e tabel hjirûnder, sadat de tabel meardere dûbele records mooglik makket.

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

As jo ​​de fjilden first_name en last_name yn 'e tabel ynstelle wolle, kinne de gegevens net werhelle wurde, jo kinne de dûbele primêre kaai modus ynstelle om de unykheid fan 'e gegevens yn te stellen As jo ​​de dûbele primêre kaai ynstelle, de standertwearde fan dy kaai kin net NULL wêze, mar kin ynsteld wurde op NOT NULL.As folget:

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

As wy in unike yndeks ynstelle, dan sil by it ynfoegjen fan dûbele gegevens de SQL-statement net suksesfol útfiere en in flater smyt.

It ferskil tusken INSERT IGNORE INTO en INSERT INTO is dat INSERT IGNORE de gegevens negearret dy't al yn de databank besteane. As der gjin gegevens yn de databank binne, sil it nije gegevens ynfoegje, en as der gegevens binne, sil dizze gegevens oerslaan.Op dizze manier kinne de besteande gegevens yn 'e databank bewarre wurde, en kin it doel fan it ynfoegjen fan gegevens yn' e gat wurde berikt.

It folgjende foarbyld brûkt INSERT IGNORE INTO, dy't sûnder flater útfiert en gjin dûbele gegevens ynfoegje yn 'e gegevenstabel:

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 By it ynfoegjen fan gegevens, neidat de unykheid fan it rekord is ynsteld, as dûbele gegevens ynfoege wurde, sil gjin flater weromjûn wurde, mar allinich in warskôging sil weromjûn wurde.En REPLACE INTO yn as d'r in primêr of unyk record is, wiskje it earst.Foegje in nij rekord yn.

In oare manier om de unykheid fan jo gegevens yn te stellen is in UNIQUE yndeks ta te foegjen lykas dit:

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

Statistiken duplicate gegevens

Hjirûnder sille wy it oantal dûbele records fan first_name en last_name yn 'e tabel telle:

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

De boppesteande fraachpetear sil it oantal dûbele records werombringe yn 'e person_tbl-tabel.Yn it algemien, om te freegjen nei dûbele wearden, doch it folgjende:

  • Bepale hokker kolom mooglik dûbele wearden befettet.
  • Brûk COUNT(*) yn 'e kolomselektelist om dy kolommen te listjen.
  • Kolommen neamd yn 'e GROUP BY-klausule.
  • De HAVING-klausule stelt it oantal werhellingen grutter dan 1.

filter dûbele gegevens

As jo ​​unike gegevens moatte lêze, kinne jo it DISTINCT-kaaiwurd brûke yn 'e SELECT-statement om dûbele gegevens te filterjen.

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

Jo kinne ek GROUP BY brûke om unike gegevens út in tabel te lêzen:

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

deduplicate gegevens

As jo ​​​​dûbele gegevens yn 'e gegevenstabel wiskje wolle, kinne jo de folgjende SQL-statement brûke:

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;

Fansels kinne jo ek INDEX (yndeks) en PRIMAY KEY (primêre kaai) tafoegje yn 'e gegevenstabel om dûbele records yn' e tabel te wiskjen.Metoaden lykas hjirûnder:

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

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) dield "Hoe freget en behannelet MySQL dûbele gegevens?Filtreer- en deduplikaasjeferklearrings" sil jo helpe.

Wolkom om de keppeling fan dit artikel te dielen:https://www.chenweiliang.com/cwl-499.html

Wolkom by it Telegram-kanaal fan Chen Weiliang's blog om de lêste updates te krijen!

🔔 Wês de earste om de weardefolle "ChatGPT Content Marketing AI Tool Usage Guide" te krijen yn 'e kanaaltopmap! 🌟
📚 Dizze hantlieding befettet enoarme wearde, 🌟Dit is in seldsume kâns, mis it net! ⏰⌛💨
Diel en like as jo wolle!
Jo dielen en likes binne ús trochgeande motivaasje!

 

发表 评论

Jo e-postadres wurdt net publisearre. Ferplichte fjilden wurde brûkt * Etiket

rôlje nei boppen