2016-03-24 27 views
0

我收集用户位置,然后在地图上显示每个用户的最新位置。我不想在表格中显示所有位置,只显示最新的位置。我将如何做到这一点?SQL:为每个用户获取最新位置

select loc_userid, loc_lat, loc_lon, loc_date 
from friends f 
join location l 
on l.loc_userid = f.friendid 
where f.userid = 1 

上面的代码在位置表中搜索所有与指定的用户标识为好友的成员位置。

回答

0

试试这个:

SELECT l.loc_userid, l.loc_lat, l.loc_lon, l.loc_date 
FROM friends f 
JOIN location l 
ON l.loc_userid = f.friendid 
WHERE f.userid = 1 
ORDER BY f.loc_date DESC 
LIMIT 1 
0

使用一个更inner join筛选出的最新位置。

select l.loc_userid, l.loc_lat, l.loc_lon, l.loc_date 
from friends f 
inner join location l 
on l.loc_userid = f.friendid 
inner join (select loc_userid, MAX(loc_date) as max_loc_date 
      from location group by loc_userid) l2 
on l.loc_userid = l2.loc_userid and l.loc_date = l2.loc_date 
where f.userid = 1