查找列表中每个地区400公里范围内的所有地区

时间:2017-09-07 13:46:43

标签: mysql sql

我有一个名为Region

的mysql表

id | name | lat | lng

我有一个我想搜索的区域ID列表,如

(48346, 48335, 48325, 48324)

对于上面的每个地区,我想搜索400公里范围内可以使用的区域(以下工作用于一个区域搜索,并将返回所选区域400公里范围内的区域列表):

// find region within 400km

SELECT id, (6371 * 
                    ACOS(COS(RADIANS(lat)) * 
                    COS(RADIANS(center_lat)) * 
                    COS(RADIANS(lng) - 
                    RADIANS(center_lng)) + 
                    SIN(RADIANS(center_lat)) * 
                    SIN(RADIANS(lat)))) AS distance
FROM
    region
WHERE
    active = 1
HAVING distance <= 400;

我的问题是,目前我正在通过区域列表(48346, 48335, 48325, 48324)运行PHP循环,并且每个id调用查询以查找400km内的区域(循环之后,返回4个区域列表)

有没有办法使用一个SQL查询来查找所有区域IN (48346, 48335, 48325, 48324);,并且每个区域找到列表中每个区域400公里内的所有区域

0 个答案:

没有答案