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.