php - 使用 INNER JOIN 从表中检索最新的时间戳行

标签 php mysql sql

想要从表中检索名称行的最新时间戳。但是只有表“location”有时间戳。 我使用 INNER JOIN 将表“elderly1”和“location”连接在一起。我只能证明我已经从“位置”表中检索到最新的时间戳,但没有检索到最新的“纬度”和“经度”。请帮忙。

查询

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

最佳答案

不知道每个表的候选键很难说太多,但通常你必须确保 SELECT 子句在功能上依赖于 GROUP BY 子句.鉴于您对问题的表述,我建议如下:

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

关于php - 使用 INNER JOIN 从表中检索最新的时间戳行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26133655/

相关文章:

sql - 如何使用递归逻辑仅返回 sql 表中的根行 (SQL Server 2008 R2)

mysql - 如何使用 MySQL 选择有 2 个具有特定值的连续行?

php - 将 unicode 输入与数据库字符串进行比较

mysql - Rails(utf-8编码问题): Active record fetching msyqldb data incorrectly

php - 将数组插入 MYSQL 字段

mysql - 大型SQL动态查询使系统崩溃

php - 我的 PDO 声明不起作用

php - imap_open() 显示 "invalid remote specification"并且连接失败

php - 检查url是否包含相同的字符串

mysql - SQL:根据两个字段从表A中删除表B中不存在的记录