gpt4 book ai didi

MySQL 仅选择最近位置(如果也是最新位置)

转载 作者:行者123 更新时间:2023-11-29 10:41:35 24 4
gpt4 key购买 nike

假设我有 3 个表,如下所示:

cities
------
name
latitude
longitude

stalls
------
id
name

locations
---------
stall_id
latitude
longitude
date

我想找到过去6个月内距离某个城市最近的摊位。这部分很好 - 我查询摊位/位置表并使用半正矢来接近距离。一切都好。

这是我当前的查询:

SELECT stalls.name, ( 3959 * acos( cos( radians($lat) ) * cos( radians( locations.lat ) ) * cos( radians( locations.lng ) - radians($lng) ) + sin( radians($lat) ) * sin(radians(locations.lat)) ) ) AS distance
FROM locations
LEFT JOIN stalls ON stalls.id = locations.trader_id
WHERE locations.added > $date
HAVING distance < 10

但是,一个摊位可能在不同的城市有多个新位置,而我只想匹配最新位置的城市。例如一个摊位可能会匹配为距离纽约最近,但随后会为洛杉矶添加一个新位置。现在它应该只在洛杉矶展示 6 个月,而不会在纽约展示 - 至少在添加另一个地点之前是这样。以前的位置需要存储,所以我不能只是清除它们。

在查询中执行此操作的最佳方法是什么?

最佳答案

要获取每个摊位的最新位置:

select l.*
from locations l
where l.date = (select max(l2.date) from locations l2 where l2.stall_id = l.stall_id);

我不确定这是否适合您的整体查询。

关于MySQL 仅选择最近位置(如果也是最新位置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45371444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com