繁体   English   中英

SQL中多个WHERE语句中的子查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM