Je mist een GROUP BY
clausule voor uw MAX()
totaal. De reden waarom je het juiste antwoord kreeg 12
voor je eerste zoekpoging was alleen omdat dat de grootste ID in de tabel is, terwijl het toevallig ook bij emp_id = 1
hoort . U zou hetzelfde resultaat hebben gekregen voor elk van de emp_id
waarden. EEN GROUP BY
clausule zal dit oplossen.
Hier is een voorbeeld van het ophalen van de hele rij voor het bijbehorende record:
SELECT * FROM timeclock
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);
Dit kan ook met een HAVING
clausule, waarbij de subquery niet nodig is:
SELECT action
FROM timeclock
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);
Ter referentie:de referentie voor MySQL-aggregatiefuncties.