Kif timmaniġġja l-mistoqsija MySQL id-dejta duplikata?Iffiltra biex tneħħi d-dikjarazzjoni tad-dejta duplikata

MySQLKif jimmaniġġjaw il-mistoqsijiet id-dejta duplikata?Iffiltra biex tneħħi d-dikjarazzjoni tad-dejta duplikata

MySQL Immaniġġjar ta' data duplikata

Jista 'jkun hemm rekords duplikati f'xi tabelli tad-dejta MySQL. F'xi każijiet, aħna nippermettu l-eżistenza ta 'dejta duplikata, iżda xi drabi għandna bżonn ukoll inħassru din id-dejta duplikata.

F'dan il-kapitolu, se nintroduċu kif tipprevjeni d-dejta duplikata fit-tabella tad-dejta u kif tħassar id-dejta duplikata fit-tabella tad-dejta.


Jipprevjeni data duplikata fit-tabelli

Tista 'tissettja l-qasam speċifikat fit-tabella tad-dejta MySQL bħala EWLENIN PRIMARJA jew UNIKU (unika) Indiċi biex tiġi żgurata l-uniċità tad-dejta.

Ejja nippruvaw eżempju: M'hemm l-ebda indiċi u ċwievet primarji fit-tabella hawn taħt, għalhekk it-tabella tippermetti rekords duplikati multipli.

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

Jekk trid tissettja l-oqsma first_name u last_name fit-tabella, id-dejta ma tistax tiġi ripetuta, tista 'tissettja l-modalità taċ-ċavetta primarja doppja biex tissettja l-uniċità tad-dejta.Jekk issettja ċ-ċavetta primarja doppja, il-valur default ta' dik iċ-ċavetta ma jistax ikun NULL, iżda jista' jiġi ssettjat għal MHUX NULL.Kif ġej:

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

Jekk nissettjaw indiċi uniku, allura meta ddaħħal data duplikata, id-dikjarazzjoni SQL tonqos milli tesegwixxi b'suċċess u tarmi żball.

Id-differenza bejn INSERT IGNORE INTO u INSERT INTO hija li INSERT IGNORE tinjora d-dejta li diġà teżisti fid-dejtabejż. Jekk ma jkunx hemm dejta fid-dejtabejż, iddaħħal dejta ġdida, u jekk ikun hemm dejta, taqbeż din id-dejta.B'dan il-mod, id-data eżistenti fid-database tista 'tiġi ppreservata, u l-iskop li tiddaħħal data fil-vojt jista' jintlaħaq.

L-eżempju li ġej juża INSERT IGNORE INTO, li jesegwixxi mingħajr żball u ma jdaħħalx dejta duplikata fit-tabella tad-dejta:

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 Meta ddaħħal id-dejta, wara li tiġi ssettjata l-uniċità tar-rekord, jekk tiddaħħal dejta duplikata, l-ebda żball ma jiġi rritornat, iżda twissija biss tiġi rritornata.U SOSTITU INTO fis jekk ikun hemm rekord primarju jew uniku, ħassarha l-ewwel.Daħħal rekord ġdid.

Mod ieħor biex tissettja l-uniċità tad-dejta tiegħek huwa li żżid indiċi UNIKU bħal dan:

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

Statistika duplikata data

Hawn taħt se ngħoddu n-numru ta' rekords duplikati ta' first_name u last_name fit-tabella:

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

Id-dikjarazzjoni ta' mistoqsija ta' hawn fuq tirritorna n-numru ta' rekords duplikati fit-tabella person_tbl.B'mod ġenerali, biex titlob valuri duplikati, agħmel dan li ġej:

  • Iddetermina liema kolonna fiha valuri duplikati possibbli.
  • Uża COUNT(*) fil-lista tal-għażla tal-kolonna biex telenka dawk il-kolonni.
  • Kolonni elenkati fil-klawżola GROUP BY.
  • Il-klawżola HAVING tistabbilixxi n-numru ta’ repetizzjonijiet akbar minn 1.

iffiltra data duplikata

Jekk għandek bżonn taqra data unika, tista' tuża l-kelma prinċipali DISTINCT fid-dikjarazzjoni SELECT biex tiffiltra data duplikata.

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

Tista' wkoll tuża GROUP BY biex taqra data unika minn tabella:

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

idduplikat data

Jekk trid tħassar dejta duplikata fit-tabella tad-dejta, tista 'tuża d-dikjarazzjoni SQL li ġejja:

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;

Naturalment, tista 'wkoll iżżid INDIĊI (indiċi) u EWLENIN PRIMARY (ċavetta primarja) fit-tabella tad-dejta biex tħassar rekords duplikati fit-tabella.Metodi kif hawn taħt:

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

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) maqsuma "Kif MySQL jistaqsi u jimmaniġġja d-dejta duplikata?Filtering and Deduplication Statements” ser jgħinek.

Merħba biex taqsam il-link ta' dan l-artikolu:https://www.chenweiliang.com/cwl-499.html

Merħba fil-kanal Telegram tal-blog ta' Chen Weiliang biex tikseb l-aħħar aġġornamenti!

🔔 Kun l-ewwel li ġġib il-"Gwida għall-Użu tal-Għodda AI għall-Marketing tal-Kontenut ChatGPT" siewja fid-direttorju ta' fuq tal-kanal! 🌟
📚 Din il-gwida fiha valur kbir, 🌟Din hija opportunità rari, titlifhiex! ⏰⌛💨
Share u like jekk togħġobkom!
Il-qsim u l-likes tiegħek huma l-motivazzjoni kontinwa tagħna!

 

发表 评论

L-indirizz elettroniku tiegħek mhux se jkun ippubblikat. Jintużaw l-oqsma meħtieġa * Tikketta

iscroll għal fuq