1

我有一个几何(点)列数据类型的表,我将数据存储为 mysql 中的 POINT 对象,如下所示:

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)

现在,我想通过给出一个 POINT 列表来选择和查找一些记录,并希望在 sql 语法中使用 WHERE in() 子句。

但是这个查询不起作用:

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

有人可以帮我解决我的问题吗?

谢谢

4

2 回答 2

0

查询的正确形式使用 MySQL 中的MBRWithin()MBRContains()地理空间函数来实际比较点并使用空间索引(如果可用)。

这些函数还可以比较不同的地理空间对象,例如,使用最小边界矩形和 R 树来确定一个点是否在线串或多边形内。

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

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

于 2013-10-22T17:08:41.157 回答
-1

尝试这个:-

SELECT id, asText(latlng) FROM `points` WHERE asText(latlng) in ('POINT(35.80684 51.427820000000004)')
于 2013-10-20T10:03:44.903 回答