需要一种优雅的方法来查找数百个匹配,而无需执行数百个查询

时间:2016-09-26 15:14:06

标签: mysql geospatial

将MySQL 5.7与地理空间扩展一起使用我有一个带字段" poly"它定义了梁的横向边界

我有一个领域" pt"它定义了一个单一的位置。

要确定给定点是否在给定波束中,我运行查询:

set @p=(select pt from beams where name='current_position');
SET @a = (select poly from beams where name='first_beam');
SELECT MBRWithin(@p,@a);

这将返回" 1"如果该点在多边形内并且" 0"如果不是

但我有大约1000个光束,我想找到current_position所在的光束,我是否需要运行一千个查询,或者是否有办法优雅地返回它所在的光束?光束不重叠,最多只有1个匹配。

1 个答案:

答案 0 :(得分:0)

MBRWithin可用于JOIN

SELECT p.id, a.id FROM 
    (select pt from beams where name='current_position') as p
INNER JOIN
    (select poly from beams where name='first_beam') as a
ON MBRWithin(p.pt, a.poly)