sql >> Database >  >> RDS >> Mysql

Selecteer de meest recente rij met GROUP BY in MySQL

U wilt het groepsgewijs maximum ; in wezen groepeert u de betalingstabel om de maximale records te identificeren en voegt u het resultaat vervolgens weer samen met zichzelf om de andere kolommen op te halen:

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

Merk op dat MAX(id) is mogelijk niet de "meest recente betaling ", afhankelijk van uw toepassing en schema:het is meestal beter om "meest recente . te bepalen " gebaseerd op TIMESTAMP dan gebaseerd op synthetische identifiers zoals een AUTO_INCREMENT primaire sleutelkolom.



  1. Mysql Left Join Null Resultaat

  2. Hoe kan ik Emoji-tekens uit mijn invoer filteren, zodat ik kan opslaan in MySQL <5.5?

  3. Grondbeginselen van tabeluitdrukkingen, deel 11 - Aanzichten, overwegingen bij wijzigingen

  4. SQL Server 2000 - Gekoppelde server