Hvordan håndterer MySQL-spørring dupliserte data?Filter for å fjerne dupliserte datasetninger

MySQLHvordan håndterer spørringer dupliserte data?Filter for å fjerne dupliserte datasetninger

MySQL Håndtering av dupliserte data

Det kan være dupliserte poster i noen MySQL-datatabeller. I noen tilfeller tillater vi eksistensen av dupliserte data, men noen ganger må vi også slette disse dupliserte dataene.

I dette kapittelet vil vi introdusere hvordan du forhindrer dupliserte data i datatabellen og hvordan du sletter dupliserte data i datatabellen.


Forhindre dupliserte data i tabeller

Du kan angi det angitte feltet i MySQL-datatabellen som PRIMÆRNØKKEL eller UNIK (unik) Indeks for å sikre unikheten til data.

La oss prøve et eksempel: Det er ingen indekser og primærnøkler i tabellen nedenfor, så tabellen tillater flere dupliserte poster.

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

Hvis du vil angi feltene fornavn og etternavn i tabellen, kan ikke dataene gjentas, du kan angi modusen for dobbel primærnøkkel for å angi dataenes unikhet. Hvis du angir den doble primærnøkkelen, er standardverdien for den nøkkelen. kan ikke være NULL, men kan settes til NOT NULL.Følgende:

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

Hvis vi setter en unik indeks, vil SQL-setningen mislykkes i å kjøre og gi en feil når du setter inn dupliserte data.

Forskjellen mellom INSERT IGNORE INTO og INSERT INTO er at INSERT IGNORE ignorerer dataene som allerede finnes i databasen. Hvis det ikke er data i databasen vil den sette inn nye data, og hvis det er data vil den hoppe over disse dataene.På denne måten kan eksisterende data i databasen bevares, og formålet med å sette inn data i gapet kan oppnås.

Følgende eksempel bruker INSERT IGNORE INTO, som kjøres uten feil og ikke setter inn dupliserte data i datatabellen:

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 Når du setter inn data, etter at unikheten til posten er satt, hvis duplikatdata settes inn, vil ingen feil returneres, men bare en advarsel vil bli returnert.Og REPLACE INTO i hvis det er en primær eller unik post, slett den først.Sett inn en ny post.

En annen måte å angi unikheten til dataene dine er å legge til en UNIK indeks som dette:

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

Statistikk duplikatdata

Nedenfor vil vi telle antall dupliserte poster av fornavn og etternavn i tabellen:

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

Spørringssetningen ovenfor vil returnere antall dupliserte poster i person_tbl-tabellen.Generelt gjør du følgende for å spørre etter dupliserte verdier:

  • Bestem hvilken kolonne som inneholder mulige dupliserte verdier.
  • Bruk COUNT(*) i kolonnevalglisten for å vise disse kolonnene.
  • Kolonner oppført i GROUP BY-klausulen.
  • HAVING-klausulen setter antall repetisjoner større enn 1.

filtrere dupliserte data

Hvis du trenger å lese unike data, kan du bruke nøkkelordet DISTINCT i SELECT-setningen for å filtrere dupliserte data.

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

Du kan også bruke GROUP BY for å lese unike data fra en tabell:

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

dedupliserte data

Hvis du vil slette dupliserte data i datatabellen, kan du bruke følgende SQL-setning:

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;

Selvfølgelig kan du også legge til INDEX (indeks) og PRIMAY KEY (primærnøkkel) i datatabellen for å slette dupliserte poster i tabellen.Metoder som nedenfor:

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

Hope Chen Weiliang blogg ( https://www.chenweiliang.com/ ) delt "Hvordan spør og håndterer MySQL dupliserte data?Filtrering og dedupliseringserklæringer" vil hjelpe deg.

Velkommen til å dele lenken til denne artikkelen:https://www.chenweiliang.com/cwl-499.html

Velkommen til Telegram-kanalen til Chen Weiliangs blogg for å få de siste oppdateringene!

🔔 Vær den første til å få den verdifulle "ChatGPT Content Marketing AI Tool Usage Guide" i kanalens toppkatalog! 🌟
📚 Denne guiden inneholder enorm verdi, 🌟Dette er en sjelden mulighet, ikke gå glipp av den! ⏰⌛💨
Del og lik om du vil!
Din deling og likes er vår kontinuerlige motivasjon!

 

发表 评论

E-postadressen din vil ikke offentliggjøres. 必填 项 已 用 * Merkelapp

bla til toppen