📅  最后修改于: 2023-12-03 14:39:35.668000             🧑  作者: Mango
Kada radite sa bazom podataka koja sadrži informacije o kontaktima, često se susrećete sa situacijom da postoje duplirani kontakati. To može biti zbog različitih razloga, poput greške prilikom unosa podataka ili migracije podataka iz različitih izvora. U ovom tekstu ćemo se baviti načinom kako da brzo i jednostavno uklonimo duplirane kontakte iz baze podataka.
Pre nego što počnemo sa brisanjem dupliranih kontakata, prvo moramo da ih identifikujemo. To možemo uraditi pomoću SQL upita koji pronalazi sve kontakte koji imaju iste vrednosti vrednosti u ključnim poljima, poput imena, prezimena i email adrese.
SELECT name, surname, email, COUNT(*) as count
FROM contacts
GROUP BY name, surname, email
HAVING COUNT(*) > 1
Ovaj upit će nam prikazati sve kontakte koji imaju isto ime, prezime i email adresu, zajedno sa brojem duplikata koji se nalaze u bazi.
Kada smo identifikovali duplirane kontakte, sledeći korak je da ih uklonimo iz baze. To možemo uraditi pomoću SQL upita koji koristi podupit za pronalaženje ID-jeva dupliranih kontakata i zatim koristi operaciju DELETE da ih ukloni iz baze.
DELETE FROM contacts
WHERE id IN (
SELECT id FROM (
SELECT id, ROW_NUMBER()
OVER (
PARTITION BY name, surname, email
ORDER BY id
) as row_number
FROM contacts
) duplicates
WHERE duplicates.row_number > 1
)
Ovaj upit će nam pomoći da uklonimo duplirane kontakte na sledeći način:
Podupit će nam vratiti sve ID-jeve dupliranih kontakata, sortirane prema ID-ju.
Glavni upit koristi operaciju DELETE da ukloni sve kontakte koji imaju ID iz podupita.
Korišćenjem operacije ROW_NUMBER() i PARTITION BY u podupitu, možemo dodeliti rang svakom kontaktu grupisanom po imenu, prezimenu i email adresi. Kontakti koji nisu jedinstveni u ovoj grupi će imati rang veći od 1, što će biti korišćeno u glavnom upitu za brisanje.
U ovom tekstu smo pokazali kako brzo i jednostavno ukloniti duplirane kontakte iz baze podataka. Identifikacija duplikata se vrši pomoću SQL upita, a brisanje se vrši pomoću druge SQL operacije. Ovi upiti su vrlo moćni alati koji nam omogućavaju da obradimo velike količine podataka u kratkom vremenskom periodu.