Du vil have det gruppevise maksimum ; i det væsentlige, grupper betalingstabellen for at identificere de maksimale poster, og sæt derefter resultatet sammen med sig selv for at hente de andre kolonner:
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
Bemærk, at MAX(id)
er muligvis ikke den "seneste betaling ", afhængigt af din applikation og dit skema:det er normalt bedre at bestemme "seneste " baseret på TIMESTAMP
end baseret på syntetiske identifikatorer såsom en AUTO_INCREMENT
primær nøglekolonne.