Mysql
 sql >> Database >  >> RDS >> Mysql

mysql orologio

Ti manca un GROUP BY clausola per il tuo MAX() aggregato. Il motivo per cui hai ottenuto la risposta corretta 12 perché il tuo primo tentativo di query è stato semplicemente perché quello sembra essere l'ID più grande nella tabella mentre per coincidenza appartiene anche a emp_id = 1 . Avresti ottenuto lo stesso risultato per qualsiasi emp_id i valori. Un GROUP BY la clausola risolverà questo problema.

Ecco un esempio che recupera l'intera riga per il record associato:

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

Questo può essere fatto anche con un HAVING clausola, non necessita della sottoquery:

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

Per riferimento, il riferimento alle funzioni aggregate di MySQL.