Direttorju tal-Artikoli
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!
📚 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!