Bạn muốn có tối đa theo nhóm ; về bản chất, hãy nhóm bảng thanh toán để xác định các bản ghi tối đa, sau đó kết hợp lại kết quả với chính nó để tìm nạp các cột khác:
SELECT users.*, payments.method, payments.id AS payment_id
FROM payments NATURAL JOIN (
SELECT user_id, MAX(id) AS id
FROM payments
GROUP BY user_id
) t RIGHT JOIN users ON users.id = t.user_id
Lưu ý rằng MAX(id)
có thể không phải là " thanh toán gần đây nhất ", tùy thuộc vào ứng dụng và giản đồ của bạn:thường tốt hơn là xác định" gần đây nhất "dựa trên TIMESTAMP
hơn là dựa trên các số nhận dạng tổng hợp như AUTO_INCREMENT
cột khóa chính.