обновить значение записи, если содержит подстроку из другого столбца - PullRequest
0 голосов
/ 30 мая 2019

У меня есть две таблицы, одна из которых содержит названия всех уникальных городов в Великобритании, а другая - страну проживания человека. Конечно, люди писали такие вещи, как «Лондон, Великобритания» или «Кардифф, Великобритания».

Мне нужно объединить столбец country_of_residence, чтобы я создал таблицу со всеми возможными городами, округами, городами и деревнями в Великобритании с почти 9000 записей.

Я хочу обновить столбец country_of_residence, если его записи содержат какие-либо записи в столбце entity в таблице uk_geo_entities.

Я прочитал много ответов здесь, но все они пытаются обновить, желая проверить или обновить одну строку , мне нужно сделать это для каждой записи столбца.

a_table                          uk_geo_entities

country_of_residence | ...       entity | ...        
-------------------- + ...       ------ + ...
london, uk                       london
cardiff, england                 cardiff


UPDATE a_table
SET country_of_residence = 'united kingdom'
FROM (SELECT entity
      FROM uk_geo_entities) b
WHERE country_of_residence LIKE '%'||b.entity||'%';

и

UPDATE psc_sharing_dodgy_officers
SET country_of_residence = 'united kingdom'
WHERE country_of_residence LIKE '%'||(SELECT entity FROM 
uk_geo_entities)||'%';

беги, но ничего не происходит.

После рабочего запроса мне нужно увидеть

a_table                         

country_of_residence | ...          
-------------------- + ...     
united kingdom                       
united kingdom

1 Ответ

0 голосов
/ 30 мая 2019

Вы можете сделать это с EXISTS в предложении WHERE:

UPDATE a_table a
SET country_of_residence = 'united kingdom'
WHERE EXISTS (
  SELECT entity 
  FROM uk_geo_entities
  WHERE a.country_of_residence LIKE '%' || entity || '%'
)

См. Демоверсию .

...