Du vill ha gruppvis maximalt ; i huvudsak, gruppera betalningstabellen för att identifiera de maximala posterna och slå sedan ihop resultatet med sig självt för att hämta de andra kolumnerna:
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
Observera att MAX(id)
kanske inte är den "senaste betalningen ", beroende på din applikation och ditt schema:det är vanligtvis bättre att avgöra "senaste " baserat på TIMESTAMP
än baserad på syntetiska identifierare som en AUTO_INCREMENT
primärnyckelkolumn.