首页 > 解决方案 > 如何使用 ST_contains 从 MySQL 8 中的表中进行选择?

问题描述

我有一个名为“社区”的表,其中有一列名为坐标,类型为 Point。

我有一个矩形。

我正在尝试选择 .coordinates 落在该矩形内的所有行。

这是我正在尝试做的事情:

SELECT * FROM `tribemap-db`.community
WHERE ST_Contains(POLYGON(34.6002788228068 31.821252014924383, 
35.21282317828298 31.821252014924383,
34.6002788228068 32.08220723021857,
35.21282317828298 32.08220723021857), community.coordinates);

这给了我一个错误:

对于此服务器版本等,“SELECT”在此位置无效。

如何正确编写此查询?

标签: mysqlgismysql-8.0

解决方案


知道了。

我所需要的只是边界矩形的两个相对角。

接着:

SELECT * 
FROM `tribemap-db`.`community`
WHERE ST_CONTAINS(ST_MakeEnvelope(
            Point(34.60, 32.08),
            Point(35.21, 31.82)
            ), community.coordinates);

而已!


推荐阅读