Está faltando um
GROUP BY cláusula para seu MAX() agregar. O motivo pelo qual você acertou a resposta 12 para sua primeira tentativa de consulta foi apenas porque esse é o maior ID na tabela e, por coincidência, pertence a emp_id = 1 . Você teria obtido o mesmo resultado para qualquer um dos emp_id valores. Um GROUP BY cláusula resolverá isso. Aqui está um exemplo recuperando a linha inteira para o registro associado:
SELECT * FROM timeclock
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);
Isso também pode ser feito com um
HAVING cláusula, não precisando da subconsulta:SELECT action
FROM timeclock
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);
Para referência, a referência de funções agregadas do MySQL.