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

Vælg den seneste række med GROUP BY i MySQL

Du vil have det gruppevise maksimum ; i det væsentlige, grupper betalingstabellen for at identificere de maksimale poster, og sæt derefter resultatet sammen med sig selv for at hente de andre kolonner:

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

Bemærk, at MAX(id) er muligvis ikke den "seneste betaling ", afhængigt af din applikation og dit skema:det er normalt bedre at bestemme "seneste " baseret på TIMESTAMP end baseret på syntetiske identifikatorer såsom en AUTO_INCREMENT primær nøglekolonne.



  1. Er der nogen ulemper ved altid at bruge nvarchar(MAX)?

  2. Sender en række værdier til Oracle-proceduren til brug i WHERE IN-klausulen

  3. Jeg skal sende kolonnenavne ved hjælp af variabel i select-sætning i butiksprocedure, men jeg kan ikke bruge dynamisk forespørgsel

  4. Vælg alle måneder inden for et givet datospænd, inklusive dem med 0 værdier