Você quer o máximo de grupo ; em essência, agrupe a tabela de pagamentos para identificar os registros máximos e, em seguida, junte o resultado de volta a si mesmo para buscar as outras colunas:
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
Observe que
MAX(id)
pode não ser o "pagamento mais recente ", dependendo do seu aplicativo e esquema:geralmente é melhor determinar "mais recente " baseado em TIMESTAMP
do que com base em identificadores sintéticos, como um AUTO_INCREMENT
coluna de chave primária.