Mysql
 sql >> Base de données >  >> RDS >> Mysql

horloge mysql

Il manque un GROUP BY clause pour votre MAX() agrégat. La raison pour laquelle vous avez obtenu la bonne réponse 12 pour votre première tentative de requête était simplement parce qu'il s'agit du plus grand ID de la table tout en appartenant par coïncidence à emp_id = 1 . Vous auriez obtenu le même résultat pour n'importe lequel des emp_id valeurs. Un GROUP BY la clause arrangera ça.

Voici un exemple récupérant toute la ligne de l'enregistrement associé :

SELECT * FROM timeclock 
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);

Cela peut aussi être fait avec un HAVING clause, ne nécessitant pas la sous-requête :

SELECT action 
FROM timeclock 
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);

Pour référence, la référence des fonctions d'agrégation MySQL.