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.