Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

relógio mysql


Está faltando um GROUP BY cláusula para seu MAX() agregar. O motivo pelo qual você acertou a resposta 12 para sua primeira tentativa de consulta foi apenas porque esse é o maior ID na tabela e, por coincidência, pertence a emp_id = 1 . Você teria obtido o mesmo resultado para qualquer um dos emp_id valores. Um GROUP BY cláusula resolverá isso.

Aqui está um exemplo recuperando a linha inteira para o registro associado:
SELECT * FROM timeclock 
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);

Isso também pode ser feito com um HAVING cláusula, não precisando da subconsulta:
SELECT action 
FROM timeclock 
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);

Para referência, a referência de funções agregadas do MySQL.