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.