Artikkelkatalog
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!
📚 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!