将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个匹配。
答案 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)