[英]Subqueries in multiple WHERE statements in SQL
我有两个表:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.