我有一个包含几何(点)列数据类型的表, 我在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))
任何人都可以帮我解决问题吗?
感谢
答案 0 :(得分:0)
查询的正确形式使用MySQL中的MBRWithin()或MBRContains()地理空间函数来实际比较点并使用空间索引(如果可用)。
这些函数还可以比较不同的地理空间对象,例如,使用最小边界矩形和R树来确定点是在线串还是多边形内。
SELECT id, asText(latlng)
FROM points
WHERE MBRWithin(latlng,POINT(35.80684, 51.427820000000004));
答案 1 :(得分:-1)
试试这个: -
SELECT id, asText(latlng) FROM `points` WHERE asText(latlng) in ('POINT(35.80684 51.427820000000004)')