Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Selecione a linha mais recente com GROUP BY no MySQL


Você quer o máximo de grupo ; em essência, agrupe a tabela de pagamentos para identificar os registros máximos e, em seguida, junte o resultado de volta a si mesmo para buscar as outras colunas:
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

Observe que MAX(id) pode não ser o "pagamento mais recente ", dependendo do seu aplicativo e esquema:geralmente é melhor determinar "mais recente " baseado em TIMESTAMP do que com base em identificadores sintéticos, como um AUTO_INCREMENT coluna de chave primária.