обновление столбца с условием из другой таблицы в postgresql - PullRequest
0 голосов
/ 05 июля 2018

Так что в основном мне нужно обновить столбец, чтобы он возвращал значение 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 голосов
/ 05 июля 2018

Я думаю, вам нужно 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...