Zobacz następujące pytanie: Deleting duplicate rows from a table.
Dostosowany akceptowane odpowiedź stamtąd (co jest moją odpowiedź, więc nie „kradzież” tutaj ...):
Można to zrobić w prosty sposób, przy założeniu, że masz wyjątkową pole ID: można usunąć wszystkie rekordy, które są takie same, z wyjątkiem identyfikatora, ale nie mają "minimalnego identyfikatora" dla swojej nazwy.
Przykład zapytania:
DELETE FROM members
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM members
GROUP BY name
)
w przypadku, gdy nie ma unikatowy indeks, moja rada jest taka, aby po prostu dodać unikatowy indeks autoinkrementowalny. Głównie dlatego, że jest to dobry projekt, ale także dlatego, że pozwoli ci uruchomić powyższe zapytanie.
Oto, jak rozumiem powyższe: dla każdej nazwy grupuje je (tylko jeden, jeśli jest unikalny, kilka w jednym, jeśli duplikaty), wybiera najmniejszy identyfikator z zestawu, a następnie usuwa dowolny wiersz, którego identyfikator nie istnieje w tabeli . Brilliant :) Dziękuję bardzo Rax. – Gulbahar
Dostałeś to dokładnie :) –
w mysql Podczas wysyłania tego zapytania pojawia się następujący błąd: "" błąd 1093 (HY000), ale daje on błąd "Nie możesz podać docelowej tabeli" członków dla aktualizacji w klauzuli FROM "' żadnych pomysłów ? –