No es tan fácil, amigos, al menos tal y como yo lo he entendido. La idea es que si en la tabla Estado hay datos, tome de ella el último para cada usuario, y si no lo hay, que tome el que tiene de partida en la tabla Usuario.
No he probado esto, pero es la idea:
En la subconsulta me traigo el último estado para cada usuario, y lo hago ordenando por id_usuario y descendente por id, y luego agrupando por id_usuario. Luego mediante una unión con LEFT JOIN me traigo todos los Usuarios y con IFNULL hago que cuando no haya dato en nuevo_estado para ese usuario, me devuelva el u.Estado de partida.
Código MySQL:
Ver original u.Nombre,
u.Apellido,
IFNULL(t1.nuevo_estado
, u.Estado
) estado
id,
id_usuario,
nuevo_estado
id_usuario,