If we have a table like that and want to remove rows with duplicate name fields.
+----+--------+
| id | name |
+----+--------+
| 1 | google |
| 2 | yahoo |
| 3 | msn |
| 4 | google |
| 5 | google |
| 6 | yahoo |
+----+--------+
1) If you want to keep the row with the lowest id
value:
DELETE n1 FROM names n1, names n2
WHERE n1.id > n2.id AND n1.name = n2.name
2) If you want to keep the row with the highest id
value:
DELETE n1 FROM names n1, names n2
WHERE n1.id < n2.id AND n1.name = n2.name
ref: http://stackoverflow.com/questions/4685173/delete-all-duplicate-rows-except-for-one-in-mysql