【发布时间】:2025-12-18 06:40:01
【问题描述】:
我有两个表,每个表都有标签、纬度、经度字段。我想拉出纬度和经度匹配的两个标签。这将创建新表 Label1、Label2、Latitude、Longitude。
SELECT Label1, Label2, Round(Latitude2,5) AS Expr1, Round(Longitude2,5) AS Expr2,Round(Latitude1,5) AS Expr3, Round(Longitude1,5) AS Expr4 INTO Merge
FROM [Table1], [Table2]
WHERE (((Round(Latitude2,5))=Round(Latitude1,5)) AND ((Round(Longitude2,5))=Round(Longitude1,5)));
这似乎让我陷入了一个循环,我很确定我明白为什么,但不能完全弄清楚如何得到我想要的。
感谢您的帮助!
【问题讨论】:
-
你的查询,虽然写得不优雅,但应该做你想做的事。因为列上有函数 (
round()),所以查询不能利用索引(如果有的话)。所以这很难优化。 -
它似乎冻结了,我已经让它走了几分钟。每个表大约有 50,000 条记录,并且并非所有记录都匹配。这会导致问题吗?我应该给它更多时间吗?
-
这取决于您在这些表上是否有多个相同的经纬度匹配。你可以得到比你想要的更多的行。假设您有(请原谅我不是真正的纬度和经度)lat, long 1,1 在表 1 中显示了 3 个不同的标签。lat, long 1,1 在表 2 中显示了 4 个不同的标签。您的加入会给出您支持 12 条记录,每个组合中的每个记录都连接在一起。
-
这是一种可能性,也许我想让它变得更简单。我可能不得不在空间上接近这个,抓住任何带有 lat,longs 的标签靠近另一个。 --Edit 在一个位置有 12 个标签不会给我带来问题,除了让我的桌子太大/太慢。
标签: sql ms-access ms-access-2010