Chybí vám GROUP BY
klauzule pro váš MAX()
agregát. Důvod, proč jste dostali správnou odpověď 12
váš první pokus o dotaz byl pouze proto, že je to náhodou největší ID v tabulce a zároveň shodou okolností patří do emp_id = 1
. Stejný výsledek byste získali pro jakékoli emp_id
hodnoty. A GROUP BY
klauzule to vyřeší.
Zde je příklad načtení celého řádku pro přidružený záznam:
SELECT * FROM timeclock
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);
To lze také provést pomocí HAVING
klauzule, která nepotřebuje poddotaz:
SELECT action
FROM timeclock
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);
Pro informaci odkaz na agregační funkce MySQL.