Bạn đang thiếu GROUP BY
mệnh đề cho MAX()
của bạn tổng hợp. Lý do bạn nhận được câu trả lời chính xác 12
đối với lần truy vấn đầu tiên của bạn chỉ đơn thuần là vì đó là ID lớn nhất trong bảng đồng thời ngẫu nhiên thuộc về emp_id = 1
. Bạn sẽ nhận được cùng một kết quả cho bất kỳ emp_id
nào các giá trị. GROUP BY
mệnh đề sẽ sắp xếp điều này.
Đây là một ví dụ truy xuất toàn bộ hàng cho bản ghi được liên kết:
SELECT * FROM timeclock
WHERE id = (SELECT MAX(id) AS id FROM timeclock WHERE emp_id = 1 GROUP BY emp_id);
Điều này cũng có thể được thực hiện với HAVING
mệnh đề, không cần truy vấn con:
SELECT action
FROM timeclock
WHERE emp_id = 1
GROUP BY emp_id
HAVING id = MAX(id);
Để tham khảo, hãy tham khảo tham chiếu các hàm tổng hợp MySQL.