U wilt het groepsgewijs maximum ; in wezen groepeert u de betalingstabel om de maximale records te identificeren en voegt u het resultaat vervolgens weer samen met zichzelf om de andere kolommen op te halen:
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
Merk op dat MAX(id)
is mogelijk niet de "meest recente betaling ", afhankelijk van uw toepassing en schema:het is meestal beter om "meest recente . te bepalen " gebaseerd op TIMESTAMP
dan gebaseerd op synthetische identifiers zoals een AUTO_INCREMENT
primaire sleutelkolom.