テーブルをそれ自体に結合し、重複を探しているフィールドごとにグループ化を行い、countが1より大きいhaving句を使用すると、重複を見つけることができます。
テーブル名がcustomersであり、重複する名前フィールドを探しているとします。
select cust_out.name, count(cust_count.name)
from customers cust_out
inner join customers cust_count on cust_out.name = cust_count.name
group by cust_out.name
having count(cust_count.name) > 1
これをdeleteステートメントで使用すると、レコードを保持する予定がある場合に、重複するすべてのレコードが削除されます。
したがって、削除するレコードを選択するには、
select cust_dup.id
from customers cust
inner join customers cust_dup on cust.name = cust_dup.name and cust_dup.id > cust.id
group by cust_dup.id