Vuoi il massimo a livello di gruppo ; in sostanza, raggruppa la tabella dei pagamenti per identificare i record massimi, quindi unisci nuovamente il risultato a se stesso per recuperare le altre colonne:
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
Nota che MAX(id)
potrebbe non essere il "pagamento più recente ", a seconda dell'applicazione e dello schema:in genere è meglio determinare "più recente " basato su TIMESTAMP
che basato su identificatori sintetici come un AUTO_INCREMENT
colonna chiave primaria.