Tips and Tricks: Brisanje duplih redaka iz tablice

Tuesday, 24.07.2012 – mradovan

Koliko puta vam se dogodilo da je u tablicu identičan redak insertan dva ili više puta, a tablica nije imala definirana ograničenja koja bi to spriječila, ili se eventualno identični redovi razlikuju samo po primarnom ključu. U svakom slučaju, od njih je potreban samo jedan, svi ostali su suvišni, i samo zauzimaju prostor, povećavaju vrijeme izvršenja upita i rade zbrku u programskom kodu i rezultatima upita.

Postoji više tehnika kako obrisati duplikate, neke od njih možete pogledati na Burleson Consulting linku

http://www.dba-oracle.com/t_delete_duplicate_table_rows.htm.

Moj favorit je kratki kod:

DELETE FROM
table_name A
WHERE
a.rowid > ANY (
SELECT B.rowid
FROM
table_name B
WHERE A.col1 = B.col1

);

Naravno, where uvjet je mjesto gdje ćete odrediti identifikatore retka, tako da može biti sastavljen od jednog ili više uvjeta vezanih AND i OR veznicima.

Post a Comment