You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写查询判断Table2的经纬度是否在Table1指定区域内

坐标区域判断SQL查询方案

核心判断逻辑

要判断Table2的坐标是否处于Table1的矩形区域内,需同时满足两个条件:

  • 纬度(_Geo_Lat)落在Table1的南边界(MapSouthLat)和北边界(MapNorthLat)之间
  • 经度(_Geo_Lon)落在Table1的西边界(MapWestLong)和东边界(MapEastLong)之间

结合你提供的示例数据,西经数值越大越靠东(比如-77.929218比-82.380500更靠东),所以上述经度范围判断逻辑是成立的。


场景1:Table1仅存单个区域记录

如果Table1只有一条区域数据,可通过以下两种方式实现判断:

方式1:带区域标记的全量查询

SELECT 
    t2.*,
    CASE 
        WHEN t2._Geo_Lat BETWEEN t1.MapSouthLat AND t1.MapNorthLat
             AND t2._Geo_Lon BETWEEN t1.MapWestLong AND t1.MapEastLong
        THEN '在区域内'
        ELSE '不在区域内'
    END AS is_in_area
FROM Table2 t2
CROSS JOIN Table1 t1;

方式2:仅判断是否匹配区域

SELECT 
    t2.*,
    EXISTS (
        SELECT 1 
        FROM Table1 t1
        WHERE t2._Geo_Lat BETWEEN t1.MapSouthLat AND t1.MapNorthLat
              AND t2._Geo_Lon BETWEEN t1.MapWestLong AND t1.MapEastLong
    ) AS is_in_area
FROM Table2 t2;

场景2:Table1存在多个区域记录

如果Table1包含多个区域数据,可通过LEFT JOIN关联,查看坐标所属的具体区域:

SELECT 
    t2.*,
    t1.MapNorthLat,
    t1.MapSouthLat,
    t1.MapEastLong,
    t1.MapWestLong,
    CASE 
        WHEN t2._Geo_Lat BETWEEN t1.MapSouthLat AND t1.MapNorthLat
             AND t2._Geo_Lon BETWEEN t1.MapWestLong AND t1.MapEastLong
        THEN '在区域内'
        ELSE '不在区域内'
    END AS is_in_area
FROM Table2 t2
LEFT JOIN Table1 t1
    ON t2._Geo_Lat BETWEEN t1.MapSouthLat AND t1.MapNorthLat
       AND t2._Geo_Lon BETWEEN t1.MapWestLong AND t1.MapEastLong;

内容的提问来源于stack exchange,提问作者john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:30:39