sql >> Base de Datos >  >> RDS >> Mysql

reloj mysql

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.