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

Recupere la última fila de marca de tiempo de la tabla usando INNER JOIN

Es difícil decir mucho sin conocer las claves candidatas de cada tabla, pero en general debe asegurarse de que SELECT la cláusula depende funcionalmente del GROUP BY cláusula. Dada su formulación del problema, sugeriría algo como:

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