試す
DELETE d
FROM dummy1 d JOIN
(
SELECT d1.id, d1.name, MAX(d1.last_used_date) max_date
FROM dummy1 d1 JOIN dummy1 d2
ON d1.id = d2.id AND d1.name = d2.name
GROUP BY id, name
) q ON d.id = q.id AND d.name = q.name AND d.last_used_date <> q.max_date
これがSQLFiddleのデモです
更新重複する ID のみをチェックするには、上記のクエリを少し調整できます
DELETE d
FROM dummy1 d JOIN
(
SELECT d1.id, MAX(d1.last_used_date) max_date
FROM dummy1 d1 JOIN dummy1 d2
ON d1.id = d2.id
GROUP BY id
) q ON d.id = q.id AND d.last_used_date <> q.max_date
これがSQLFiddleのデモです
UPDATE2タイムスタンプが最大の重複を削除するには
1) オプションで一意のインデックスを導入することで可能になりIGNORE
ます。その場合、MySql は保持するレコードを自身で決定します。
ALTER TABLE dummy1 ENGINE MyISAM;
ALTER IGNORE TABLE dummy1 ADD UNIQUE (id, name);
ALTER TABLE dummy1 ENGINE InnoDB;