对于在MySQL几何列,其中在栏()子句(where col in() clause for geo

2019-10-18 18:52发布

我有几何形状(点)列数据类型的表,我存储在像这样的MySQL数据作为点对象:

id      asText(latlng)

1   POINT(35.80684 51.427820000000004)

2   POINT(35.726940000000006 51.30407)

3   POINT(35.726940000000006 51.30407)

4   POINT(35.726940000000006 51.30407)

5   POINT(35.72343 51.303200000000004)

6   POINT(35.72675 51.303760000000004)

现在,我要选择和给予积分的列表中找到一些记录,并希望使用WHERE在()子句中的SQL语法。

但此查询不工作:

SELECT id, asText(latlng) FROM `points` WHERE latlng in (POINT(35.80684 51.427820000000004))

有人能帮助我解决我的问题呢?

谢谢

Answer 1:

尝试这个:-

SELECT id, asText(latlng) FROM `points` WHERE asText(latlng) in ('POINT(35.80684 51.427820000000004)')


Answer 2:

查询的正确形式使用MBRWithin()或MBRContains()地理空间功能在MySQL实际的比较这点,如果有使用空间索引。

这些功能也可以比较不同的地理空间对象,以确定,例如,一个点是否为线串或多边形之内,利用最小限界矩形和R-树。

SELECT id, asText(latlng)
  FROM points
 WHERE MBRWithin(latlng,POINT(35.80684, 51.427820000000004));

这里现场演示: http://sqlfiddle.com/#!2/394d0a/1



文章来源: where col in() clause for geometry column in mysql