我有两个表:
Place
-id
-latitude
-longitude
Event
-id
-user_id
-latitude
-longitude
-radius
我需要将一直到位的user_id列表作为输出。我不确定我可以使用子查询来做到这一点,因为我必须同时检查两个参数:纬度(+-半径)和经度(+-半径)。
承认半径始终为1以简化问题,它给出了以下查询:
SELECT * FROM event WHERE
latitude > (SELECT latitude-1 FROM place) AND
latitude < (SELECT latitude+1 FROM place) AND
longitude > (SELECT longitude-1 FROM place) AND
longitude < (SELECT latitude+1 FROM place)
失败是因为子查询不能返回多个行。正确的做法是什么?
怎么办呢(由于我没有MySQL或数据来测试这一点,所以我应该在它周围加上吓人的引号。)
select distinct
place.id,
user_id
from
event
inner join place on
event.latitude between
place.latitude - event.radius
and place.latitude + event.radius
and event.latitude between
place.longitude - event.radius
and place.longitude + event.radius;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句