因此,基本上,我需要更新列以在附近的另一个表中有功能时返回true
到目前为止我的查询看起来像
update tablea a set is_nearby =
case when b.condition1 = 1 and st_dwithin(a.geom, b.geom, 100) then true
else false end
from tableb b
但是当我知道不是这种情况时,这只会返回所有错误
答案 0 :(得分:1)
我认为您需要exists
:
update tablea a
set is_nearby = (case when exists (select 1
from tableb b
where b.condition1 = 1 and st_dwithin(a.geom, b.geom, 100)
then true
else false
end);
或更简单地说,没有case
:
update tablea a
set is_nearby = (exists (select 1
from tableb b
where b.condition1 = 1 and st_dwithin(a.geom, b.geom, 100)
);
查询的问题是from
正在生成叉积,因此将b
中的所有行与a
中的每一行进行比较。但是,仅设置了一个值-该值来自b
中任意匹配的行。