sql >> Base de Datos >  >> RDS >> Mysql

Seleccione la fila más reciente con GROUP BY en MySQL

Quiere el grupo máximo ; en esencia, agrupe la tabla de pagos para identificar los registros máximos, luego una el resultado consigo mismo para obtener las otras columnas:

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

Tenga en cuenta que MAX(id) puede no ser el "pago más reciente ", dependiendo de su aplicación y esquema:por lo general, es mejor determinar "más reciente " basado en TIMESTAMP que en identificadores sintéticos como AUTO_INCREMENT columna de clave principal.