Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Najbolje prakse dizajna baze podataka preporučuju korištenje UNIQUE ograničenja za sprječavanje duplikata u bazi podataka. Međutim, kada radite s loše dizajniranom bazom podataka ili nečistim podacima, možda ćete morati sami pronaći duplikate i ručno ih izbrisati.

Pročitajte kako biste saznali kako pronaći duplikate u SQL bazi podataka i kako ih izbrisati.

Napravite oglednu bazu podataka

U svrhu demonstracije, kreirajte tablicu pod nazivom Korisnici sa stupcem naziva i rezultata pokretanjem ovog SQL upita.

PADSTOLAKOPOSTOJIKorisnici;

STVORITISTOLKorisnici (
pk_id int GLAVNI KLJUČ,
naziv VARCHAR (16),
rezultat INT,
);

Umetnite neke uzorke vrijednosti pokretanjem ovog upita:

UMETNUTIU
Korisnici (pk_id, ime, rezultat)
VRIJEDNOSTI
(1, 'Jane', 20),
(2, 'Ivan', 13),
(3, 'Alex', 32),
(4, 'Ivan', 46),
(5, 'Jane', 20),
(6, 'Mary', 34),
(7, 'Jane', 20),
(8, 'Ivan', 13)

Imajte na umu da neki od ovih redaka sadrže duplicirane vrijednosti za stupac naziva.

instagram viewer

Slobodno ih pogledajte SQL naredbe i upiti ako trebate dublje objašnjenje kako manipulirati bazama podataka pomoću SQL-a.

Korištenje GROUP BY za pronalaženje duplikata vrijednosti

Možeš koristite naredbu GROUP BY za raspoređivanje vrijednosti koji ispunjavaju određene uvjete u istoj skupini.

Recimo da imena u oglednoj tablici moraju biti jedinstvena. Možete koristiti GROUP BY za grupiranje redaka koji dijele isto ime.

IZABERIIme, RAČUNATI(Ime)
OD korisnika
GRUPIRAJ PO imenu
BROJATI (ime) > 1

COUNT vam omogućuje da odaberete retke koji imaju više od jednog korisnika s istim imenom.

Kada pokrenete ovaj upit, baza podataka će vratiti retke koji sadrže Ivana i Jane kao duplikate.

Brisanje duplikata iz baze podataka

Nakon pronalaska duplikata, možda ćete ih htjeti izbrisati pomoću naredbe DELETE.

Za ovaj primjer pokrenite sljedeći upit:

S cte KAO (
IZABERI *
ROW_NUMBER() PREKO (
PODJELA PO
ime, rezultat
NARUČI PO
ime, rezultat
) R
IZ
Korisnici
)

IZBRISATIIZ cte
GDJE JE R > 1;

Ovaj upit koristi CTE izraz za pronalaženje duplikata, a zatim ih briše sve osim jednog.

Zašto biste trebali izbrisati duple podatke

Brisanje dupliciranih podataka nije nužno. Međutim, omogućuje vam oslobađanje prostora koji koriste duplikati redaka.

Manje redaka također znači da se upiti mogu izvršavati mnogo brže što dovodi do bolje izvedbe. Upotrijebite upite u ovom vodiču kako biste lakše pronašli i uklonili duplikate iz SQL baze podataka.