Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sélectionnez la ligne la plus récente avec GROUP BY dans MySQL

Vous voulez le maximum par groupe ; en gros, regroupez la table des paiements pour identifier le nombre maximal d'enregistrements, puis rejoignez le résultat avec lui-même pour récupérer les autres colonnes :

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

Notez que MAX(id) peut ne pas être le "paiement le plus récent ", en fonction de votre application et de votre schéma :il est généralement préférable de déterminer "le plus récent " basé sur TIMESTAMP que basé sur des identifiants synthétiques tels qu'un AUTO_INCREMENT colonne de clé primaire.