其中col in()子句为mysql中的geometry列

时间:2013-10-20 10:01:07

标签: mysql select geometry

我有一个包含几何(点)列数据类型的表, 我在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))

任何人都可以帮我解决问题吗?

感谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-1)

试试这个: -

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