Липсва ви GROUP BY
клауза за вашия MAX()
агрегат. Причината да получите правилния отговор 12
защото първият ви опит за заявка беше просто защото това е най-големият идентификатор в таблицата, като съвпада и принадлежащ към emp_id = 1
. Щяхте да получите същия резултат за всеки от emp_id
стойности. A GROUP BY
клауза ще подреди това.
Ето пример за извличане на целия ред за свързания запис:
SELECT * FROM timeclock
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);
Това може да стане и с HAVING
клауза, без нужда от подзаявката:
SELECT action
FROM timeclock
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);
За справка, справочника за обобщените функции на MySQL.