Te falta un GROUP BY cláusula para su MAX() agregar. La razón por la que obtuviste la respuesta correcta 12 porque su primer intento de consulta se debió simplemente a que resulta ser el ID más grande de la tabla y, al mismo tiempo, pertenece a emp_id = 1 . Habría obtenido el mismo resultado para cualquiera de los emp_id valores. UN GROUP BY la cláusula solucionará esto.
Aquí hay un ejemplo recuperando la fila completa para el registro asociado:
SELECT * FROM timeclock
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);
Esto también se puede hacer con un HAVING cláusula, sin necesidad de la subconsulta:
SELECT action
FROM timeclock
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);
Como referencia, la referencia de funciones agregadas de MySQL.