1

Nicklas,感谢您对我上一个问题的回答....

请原谅我的无知和问一些可能很简单的问题,但数据库不是我的专业领域。

给我每个 percinct 中的崩溃次数的 select 语句: SELECT P.precinct, count(C) FROM nycpp P, nyccrash C WHERE _st_contains(P.the_geom, C.crashpoint) GROUP BY P.precinct ORDER BY P.precinct ;

我只想将计数添加到我的 nycpp 表中,保存计数的变量是 number_of crashs....

再次感谢协助

克里斯

4

1 回答 1

1

你好

我假设 precinct 是 nycpp 中的唯一 ID,那么您可以尝试:

update nycpp set number_of crashes=a.n_crashes from 
(SELECT P.precinct, count(C) as n_crashes FROM nycpp P, nyccrash C 
WHERE _st_contains(P.the_geom, C.crashpoint) 
GROUP BY P.precinct 
ORDER BY P.precinct) a
where nycpp.precinct=a.precinct;

但是你为什么使用 _st_contains 而不是 st_contains

下划线版本不会使用您的空间索引,但 st_contains 会在运行下划线版本之前进行第一次索引扫描以查找相交的边界框。

因此,您可能绝对想使用 st_contains 而不是 contains。如果您的表足够大,需要索引:在此查询中,空间索引对表和区域索引都很重要。不要忘记在创建索引后分析表以使它们工作。

顺便说一句,如果您对答案感到满意,我认为您应该将问题标记为已回答,这样其他人就不必尝试回答它们。

HTH 尼克拉斯

于 2010-10-26T07:35:45.140 回答