Anda melewatkan GROUP BY
klausa untuk MAX()
. Anda agregat. Alasan Anda mendapatkan jawaban yang benar 12
untuk percobaan kueri pertama Anda hanya karena itu adalah ID terbesar dalam tabel sementara juga secara kebetulan milik emp_id = 1
. Anda akan mendapatkan hasil yang sama untuk salah satu emp_id
nilai-nilai. Sebuah GROUP BY
klausa akan menyelesaikan masalah ini.
Berikut adalah contoh mengambil seluruh baris untuk catatan terkait:
SELECT * FROM timeclock
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);
Ini juga dapat dilakukan dengan HAVING
klausa, tidak memerlukan subquery:
SELECT action
FROM timeclock
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);
Untuk referensi, referensi fungsi agregat MySQL.