SQL选择数据与多列匹配的行

时间:2012-07-17 03:02:33

标签: mysql

我有多对由用户输入(php)计算的笛卡尔坐标(X,Y),它们形成一个范围(图片为多边形)。

从我的数据库(600分),我需要找到属于该范围内的任何点(在多边形内),并排除任何超出该范围的点。

我想在一个SQL语句中完成所有操作,但我似乎无法理解在同一行中匹配两个不同值(两个不同列)的逻辑。

我想我在两个表之间拆分数据并使用内连接?但这似乎有点过头了。

我尝试使用MYSQL的几何部分(尝试使用“point”数据类型搜索坐标对),但我看不到我导入的数据(导入成功后)。当我从一行中选择所有数据时,尝试并显示$ row [“coords”](应该是点数据),我得到的是一堆奇怪的ASCII字符和正方形......

所以希望有一种简单的方法可以使用常规SQL。

1 个答案:

答案 0 :(得分:1)

假设您有这样的表:

TABLE_1:

ID     |    INT
X_POS  |    INT
Y_POS  |    INT 

ID - 自动增量主键 X_POS - 点的X坐标 Y_POS - 点的Y坐标

现在您有以下示例数据:

ID | X_POS | Y_POS
1  | 3.25  | 1.75
2  |-0.5   | 2.17

等。

现在,您要选择X轴上的点在-1.34和1.28之间的所有行 并且在Y轴上在-5.63和0.98之间

您的查询应如下所示:

SELECT * FROM TABLE_1 
WHERE 
(X_POS BETWEEN -1.34 AND 1.28) AND
(Y_POS BETWEEN -5.63 AND 0.98)

您可以在此处测试此示例:SQLFIDDLE

<强>更新

你绝对应该使用MySQL Spatial Extension

  

我尝试过使用MYSQL的几何部分(尝试搜索   coord对使用“point”数据类型),但我看不到数据I   已导入

请提供有关表格的详细信息(SHOW CREATE TABLE)以及导入数据的方式。

然后我可以帮助你。