Entiendo, entonces los campos no son iguales, no son copias exactas, bueno, pensando en eso, debes crear una serie de instruccies de todas formas, y la parte de crear temporal, borrar original, etc, lo puedes hacer desde un script normal, no necesitas tener acceso a un ambiente visual.
Necesitaras probar varias combinaciones para eso...
Lo malo es que creo que MySql no soporta cursores, eso seria lo mas recomendable en tu caso,
Primero busca que select te regresa exactamente lo que necesitas.
Necesitas probar por partes:
1. Regeresar el Max(ID) para un usuario
select Max(ID) from Tabla where name = 'pepe'
2. Basado en ese MaxID, traes toda su info:
select * from Tabla where ID = (select Max(ID) from Tabla where name = 'pepe')
Pero bueno, ocupandose para todo, creo que tendras que apoyarte en un script de PHP, que haga lo siguiente:
select distinct name, pass, id from tabla.
Eso lo tienes en un arreglo, entonces haces una consulta para cada nombre como la consulta 1.
Ya tienes los ID maximos en un arreglo, entonces corres consultas para cada ID, entonces ya tienes toda la info correcta en un arreglo.
Ahora corres inserts para cada registro en tu arreglo.
Creo que eso es lo que necesitas, porque se trata de algo mas avanzado y complicado por el detalle que mencionas.
Suerte!!