我有2个表,“位置”和“发生”。 occurrence存储事件,具有creatorId和时间戳。我正在尝试从发生时间戳的5分钟内从位置计算所有时间戳的位置表的平均纬度,并将其放在发生纬度列中。
我已经尝试了下面的内容,并在'where子句'中获得了一个“未知列'events.creatorId'。
update occurrence set latitude = (
select avg(latitude) from (
select * from location where (
location.creatorId=occurrence.creatorId
and location.timestamp<occurrence.timestamp+interval 5 minute
and location.timestamp>occurrence.timestamp-interval 5 minute
)
) as test
);
我的怀疑是我试图写得太像Java程序了。有人可以帮助我的大脑变得更像MySQL吗?
谢谢! 巴格
答案 0 :(得分:0)
请改为尝试:
update o
set latitude = (select avg(latitude)
from location
where location.creatorId=o.creatorId
and location.timestamp<o.timestamp+interval 5 minute
and location.timestamp>o.timestamp-interval 5 minute)
from occurrence o
您收到错误“unknown column'insvent.creatorId'”,因为您的最里面的子查询无法访问表的出现。因此,子查询中对出现表中的列的所有引用都是无效的。上面的查询应该可行。
答案 1 :(得分:0)
试试这个。
update occurance o
set o.latitude = (select avg(l.latitude)
from location l where o.creatorId=l.creatorId
and l.timestamp between o.timestamp-interval 5
minute and o.timestamp+interval 5 minute)