Vous voulez le maximum par groupe ; en gros, regroupez la table des paiements pour identifier le nombre maximal d'enregistrements, puis rejoignez le résultat avec lui-même pour récupérer les autres colonnes :
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
Notez que MAX(id)
peut ne pas être le "paiement le plus récent ", en fonction de votre application et de votre schéma :il est généralement préférable de déterminer "le plus récent " basé sur TIMESTAMP
que basé sur des identifiants synthétiques tels qu'un AUTO_INCREMENT
colonne de clé primaire.