Sie möchten das gruppenweise Maximum ; Gruppieren Sie im Wesentlichen die Zahlungstabelle, um die maximalen Datensätze zu identifizieren, und verbinden Sie dann das Ergebnis wieder mit sich selbst, um die anderen Spalten abzurufen:
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
Beachten Sie, dass MAX(id)
darf nicht die "letzte Zahlung sein ", abhängig von Ihrer Anwendung und Ihrem Schema:Es ist normalerweise besser, "neueste" zu bestimmen " basierend auf TIMESTAMP
als basierend auf synthetischen Identifikatoren wie einem AUTO_INCREMENT
Primärschlüsselspalte.