Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wählen Sie die neueste Zeile mit GROUP BY in MySQL aus

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.