Chcesz maksymalna grupa ; w skrócie, pogrupuj tabelę płatności, aby zidentyfikować maksymalne rekordy, a następnie połącz wynik z powrotem, aby pobrać inne kolumny:
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
Zwróć uwagę, że MAX(id)
może nie być „najnowszą płatnością ”, w zależności od aplikacji i schematu:zwykle lepiej jest określić „najnowsze " na podstawie TIMESTAMP
niż na podstawie syntetycznych identyfikatorów, takich jak AUTO_INCREMENT
kolumna klucza głównego.