sql >> Database >  >> RDS >> Mysql

MySQL voegt twee tabellen samen met de maximale waarde op een ander veld

U moet twee subquery's zoals deze gebruiken:

SELECT a.cid, a.name, a.mobile, b.date, b.balance
FROM account a 
JOIN
(
    SELECT b1.* FROM balance b1
    JOIN
    (
      SELECT cid, MAX(Date) As maxDate
      FROM balance
      GROUP BY cid
    ) b2
    ON b1.cid = b2.cid
    AND b1.date = b2.maxDate
) b
ON a.cid = b.cid;

Uitgang:

CID NAAM MOBIEL DATUM BALANS
1 ABC 12345 20 september 2013 00:00:00+0000 300
2 XYZ 98475 21 september 2013 00:00:00+0000 600

Zie deze SQLFiddle

Bewerken

Zoals besproken in de opmerkingen, kan deze zoekopdracht ook worden geschreven met slechts één subquery:

SELECT a.cid, a.name, a.mobile, b1.date, b1.balance 
FROM account a 
JOIN balance b1 ON a.cid = b1.cid     
JOIN (
    SELECT cid, MAX(Date) As maxDate 
    FROM balance 
    GROUP BY cid
) b2 
ON b1.cid = b2.cid 
AND b1.date = b2.maxDate

Zie de aangepaste SQLFiddle



  1. Postgres - hoe rijen met 0-tellingen te retourneren voor ontbrekende gegevens?

  2. SQL-status:42601 syntaxisfout op of nabij 11

  3. Mysql Query-problemen met LIKE en apostrof

  4. Hoe gegevens van de laatste 7 dagen te krijgen van de huidige datetime tot de laatste 7 dagen op de sql-server