Du mangler en GROUP BY
klausul for din MAX()
samlet. Grunden til at du fik det rigtige svar 12
for dit første forespørgselsforsøg var blot, fordi det tilfældigvis er det bedste ID i tabellen, mens det også tilfældigt hører til emp_id = 1
. Du ville have fået det samme resultat for enhver af emp_id
værdier. En GROUP BY
klausul vil ordne dette.
Her er et eksempel på at hente hele rækken for den tilknyttede post:
SELECT * FROM timeclock
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);
Dette kan også gøres med en HAVING
klausul, der ikke behøver underforespørgslen:
SELECT action
FROM timeclock
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);
Til reference, referencen for MySQL-aggregater.