Mysql
 sql >> Database >  >> RDS >> Mysql

Seleziona la riga più recente con GROUP BY in MySQL

Vuoi il massimo a livello di gruppo ; in sostanza, raggruppa la tabella dei pagamenti per identificare i record massimi, quindi unisci nuovamente il risultato a se stesso per recuperare le altre colonne:

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

Nota che MAX(id) potrebbe non essere il "pagamento più recente ", a seconda dell'applicazione e dello schema:in genere è meglio determinare "più recente " basato su TIMESTAMP che basato su identificatori sintetici come un AUTO_INCREMENT colonna chiave primaria.