Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Rufen Sie die letzte Zeitstempelzeile mit INNER JOIN aus der Tabelle ab

Es ist schwierig, viel zu sagen, ohne die Kandidatenschlüssel jeder Tabelle zu kennen, aber im Allgemeinen müssen Sie sicherstellen, dass die SELECT -Klausel ist funktional abhängig von GROUP BY Klausel. Angesichts Ihrer Formulierung des Problems würde ich Folgendes vorschlagen:

SELECT e.name,e.illness, e.patient_id,e.patient_image,e.area, e.arduino_mac,
       l.arduino_mac, l.latitude, l.longitude, l.timestamp as ts 
FROM elderly1 e 
JOIN ( SELECT l1.arduino_mac, l1.latitude, l1.longitude, l1.timestamp
       FROM location l1
       WHERE timestamp = ( SELECT MAX(timestamp)
                           FROM LOCATION l2
                           WHERE l1.arduino_mac = l2.arduino_mac )
) as l
    on e.arduino_mac = l.arduino_mac 
ORDER BY l.timestamp