Kiel MySQL-demando pritraktas duplikatajn datumojn?Filtrilo por forigi duplikatajn datumojn

MySQLKiel demandoj pritraktas duplikatajn datumojn?Filtrilo por forigi duplikatajn datumojn

MySQL Pritraktado de duplikataj datumoj

Eble estas duplikataj registroj en iuj MySQL-datumtabloj.En kelkaj kazoj, ni permesas la ekziston de duplikataj datumoj, sed foje ni ankaŭ bezonas forigi ĉi tiujn duplikatajn datumojn.

En ĉi tiu ĉapitro, ni enkondukos kiel malhelpi duplikatajn datumojn en la datumtabelo kaj kiel forigi la duplikatajn datumojn en la datumtabelo.


Malhelpi duplikatajn datumojn en tabeloj

Vi povas agordi la specifitan kampon en la MySQL-datumtabelo kiel PRIMA Ŝlosilo  UNIKA (unika) Indekso por certigi la unikecon de datumoj.

Ni provu ekzemplon: Ne estas indeksoj kaj ĉefaj ŝlosiloj en la suba tabelo, do la tabelo permesas plurajn duplikatajn rekordojn.

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

Se vi volas agordi la kampojn first_name kaj last_name en la tabelo, la datumoj ne povas esti ripetitaj, vi povas agordi la duoblan ĉefŝlosilreĝimon por agordi la unikecon de la datumoj.Se vi fiksas la duoblan ĉefŝlosilon, la defaŭltan valoron de tiu ŝlosilo ne povas esti NULL, sed povas esti agordita al NOT NULL.Kiel sekvas:

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

Se ni fiksas unikan indekson, tiam kiam enmetante duplikatajn datumojn, la SQL-deklaro malsukcesos ekzekuti sukcese kaj ĵetos eraron.

La diferenco inter INSERT IGNORE INTO kaj INSERT INTO estas, ke INSERT IGNORE ignoras la datumojn kiuj jam ekzistas en la datumbazo. Se ne estas datumoj en la datumbazo, ĝi enigos novajn datumojn, kaj se estas datumoj, ĝi preterlasos ĉi tiujn datumojn.Tiamaniere, la ekzistantaj datumoj en la datumbazo povas esti konservitaj, kaj la celo enmeti datumojn en la interspacon povas esti atingita.

La sekva ekzemplo uzas INSERT IGNORE INTO, kiu efektivigas senerare kaj ne enmetas duplikatajn datumojn en la datumtabelon:

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 Enmetante datumojn, post kiam la unikeco de la rekordo estas fiksita, se duplikataj datumoj estas enmetitaj, neniu eraro estos resendita, sed nur averto estos resendita.Kaj anstataŭigi en se estas ĉefa aŭ unika rekordo, unue forigu ĝin.Enigu novan rekordon.

Alia maniero agordi la unikecon de viaj datumoj estas aldoni UNIKAN indekson jene:

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

Statistikoj duobligas datumojn

Malsupre ni kalkulos la nombron da duplikataj registroj de antaŭnomo kaj familinomo en la tabelo:

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

La ĉi-supra demanda deklaro resendos la nombron da duplikataj registroj en la person_tbl-tabelo.Ĝenerale, por demandi duplikatajn valorojn, faru la jenon:

  • Determini kiu kolumno enhavas eblajn duplikatajn valorojn.
  • Uzu COUNT(*) en la kolumna elektlisto por listigi tiujn kolumnojn.
  • Kolumnoj listigitaj en la klaŭzo GROUP BY.
  • La subfrazo HAVING fiksas la nombron da ripetoj pli granda ol 1.

filtri duplikatajn datumojn

Se vi bezonas legi unikajn datumojn, vi povas uzi la ŝlosilvorton DISTINCT en la deklaro SELECT por filtri duplikatajn datumojn.

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

Vi ankaŭ povas uzi GROUP BY por legi unikajn datumojn de tabelo:

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

dedupliki datumojn

Se vi volas forigi duplikatajn datumojn en la datumtabelo, vi povas uzi la jenan SQL-deklaron:

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;

Kompreneble, vi ankaŭ povas aldoni INDEX (indekso) kaj PRIMAY KEY (ĉefa ŝlosilo) en la datumtabelo por forigi duplikatajn rekordojn en la tabelo.Metodoj kiel sube:

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

Hope Chen Weiliang Blogo ( https://www.chenweiliang.com/ ) konigis "Kiel MySQL demandas kaj pritraktas duplikatajn datumojn?Deklaroj pri Filtrado kaj Deduplikado" helpos vin.

Bonvenon dividi la ligon de ĉi tiu artikolo:https://www.chenweiliang.com/cwl-499.html

Bonvenon al la Telegram-kanalo de la blogo de Chen Weiliang por ricevi la plej novajn ĝisdatigojn!

🔔 Estu la unua ricevi la valoran "ChatGPT Content Marketing AI Tool Use Guide" en la ĉefa dosierujo de la kanalo! 🌟
📚 Ĉi tiu gvidilo enhavas grandegan valoron, 🌟Ĉi tio estas malofta ŝanco, ne maltrafu ĝin! ⏰⌛💨
Kunhavigu kaj ŝatu se vi ŝatas!
Via kundivido kaj ŝatoj estas nia kontinua instigo!

 

Lasu komenton

Via retpoŝta adreso ne estos publikigita. Bezonataj kampoj estas uzataj * Etikedo

rulumu al la supro