For the query, UPDATEwe need to get the identifier min and max for each tag, only if there are duplicate lines:
UPDATE table t
JOIN (
SELECT MinID, b.Name LatestName
FROM table b
JOIN (
SELECT MIN(ID) MinID, MAX(ID) MaxID
FROM table
GROUP BY tag
HAVING COUNT(*) > 1
) g ON b.ID = g.MaxID
) rs ON t.ID = rs.MinID
SET t.Name = LatestName;
DELETE , :
DELETE t.*
FROM table t
LEFT JOIN (
SELECT MIN(ID) MinID
FROM table
GROUP BY tag
) g ON t.ID = g.MinID
WHERE g.MinID IS NULL;