gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:22:40 24 4
gpt4 key购买 nike

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

从我的数据库(600 个点)中,我需要找到落在该范围内(多边形内)的任何点,并排除该范围之外的任何点。

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

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

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

所以希望有一种简单的方法可以使用常规 SQL 来完成此操作。

最佳答案

假设您有这样的表:

表_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

I have tried playing with the geometry part of MYSQL (trying to search coord pairs using the "point" datatype), but I cannot see the data I have imported

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

那我可以帮助你。

关于mysql - SQL 选择数据与多列匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11515461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com