sql >> Databasteknik >  >> RDS >> Mysql

Välj den senaste raden med GROUP BY i MySQL

Du vill ha gruppvis maximalt ; i huvudsak, gruppera betalningstabellen för att identifiera de maximala posterna och slå sedan ihop resultatet med sig självt för att hämta de andra kolumnerna:

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

Observera att MAX(id) kanske inte är den "senaste betalningen ", beroende på din applikation och ditt schema:det är vanligtvis bättre att avgöra "senaste " baserat på TIMESTAMP än baserad på syntetiska identifierare som en AUTO_INCREMENT primärnyckelkolumn.



  1. Hur man returnerar utdata från lagrad procedur till en variabel i sql-server

  2. Namngivning av viloläge skiljer sig mellan olika operativsystem

  3. Ändra år i mysql date

  4. Oracle SQL PIVOT-tabell