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