Du saknar en GROUP BY sats för din MAX() aggregat. Anledningen till att du fick rätt svar 12 för ditt första sökförsök berodde bara på att det råkar vara det bästa ID:t i tabellen samtidigt som det också tillhörde emp_id = 1 . Du skulle ha fått samma resultat för någon av emp_id värden. En GROUP BY klausul kommer att reda ut detta.
Här är ett exempel på att hämta hela raden för den associerade posten:
SELECT * FROM timeclock
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);
Detta kan också göras med en HAVING klausul, behöver inte underfrågan:
SELECT action
FROM timeclock
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);
Som referens, referensen för MySQL-aggregatfunktioner.