用来自PostgreSQL中另一个表的条件更新列

时间:2018-07-05 15:14:52

标签: sql postgresql join sql-update

因此,基本上,我需要更新列以在附近的另一个表中有功能时返回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

但是当我知道不是这种情况时,这只会返回所有错误

1 个答案:

答案 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中任意匹配的行。