Usuwanie duplikatów z tabeli MySQL
Filed Under (informatyka) by Tomek on 09-05-2009
Z racji Juwenaliów i zbliżającej się sesji, wpisy rzadsze, ale mam nadzieję, że wartościowe :-)
Potrzebowałem ostatnio usunąć z bazy adresów e-mail powtarzające się wpisy i znalazłem na to ciekawe rozwiązanie w komentarzach do jednego z zagranicznych blogów, które dla potomności przedstawiam poniżej.
-
DELETE FROM table1
-
USING table1, table1 AS vtable
-
WHERE (table1.id > vtable.id)
-
AND (table1.field_name = vtable.field_name)
Analizując po kolei:
- Usuwamy rekordy z tabeli table1
- Używając tabeli table1 raz jako jej samej i drugi raz jako tabeli wirtualnej pod nazwą vtable (daje nam to możliwość porównywania rekordów z innymi w tej samej tabeli)
- Zabezpieczamy się przed porównaniem rekordu ze samym sobą oraz wcześniejszymi rekordami, z którymi został on już porównany (id jest kluczem tabeli)
- Każemy usunąć rekordy, w których wartość pola field_name jest taka sama
Nazwy table1, id, field_name zamieniamy na nazwy tabel i pól we własnej bazie danych.


Dzięki, bardzo mi pomogłeś :)
Takie proste a takie pożyteczne!
Pomogło :) Dzięki.
Ja naprawdę kocham, aby goście delegowania na własny blog
Naprawdę bardzo pomocne zapytanie, wszystko co wymyśliłem było gorsze :P, dzięki.