Обновление нескольких строк в таблице из другой таблицы при наличии условия


У меня есть две таблицы.

Таблица 1 содержит компании, местоположение которых привязано к координатам lat / lng в столбце the_geom

В таблице 2 также содержатся те же компании из таблицы 1, не привязанные к географической привязке, а также сотни других компаний, адреса которых привязаны к географической привязке.

Все, что мне нужно сделать, это вставить значения the_geom lat/lng из таблицы 1 компаний в соответствующие записи в таблице 2. Обычное явление знаменателем, на котором могут основываться эти вставки, является столбец address.

Простой вопрос, я уверен, но я редко использую SQL.

3 10

3 ответа:

Предполагая, что по

Вставить" the_geom " значения lat/lng

На самом деле вы хотите обновить существующие строки в таблице 2:

UPDATE table2 t2
SET    the_geom = t1.the_geom
FROM   table1 t1
WHERE  t2.address = t1.address
AND    t2.the_geom IS DISTINCT FROM t1.the_geom; -- avoid empty updates

Также предполагая, что столбец address имеет значения UNIQUE.
Подробности о UPDATE в отличном руководстве здесь .

Если вы являетесь пользователем mysql (как и я), и если приведенный выше скрипт не работает, вот эквивалент mysql.

UPDATE table2 t2, table1 t1
SET    the_geom = t1.the_geom
WHERE  t2.address = t1.address
AND    t2.the_geom <> t1.the_geom; -- avoid empty updates

Все кредиты ОП.

У меня была похожая проблема, но когда я попробовал решения, упомянутые выше, я получил ошибку, как

неверный синтаксис рядом с 't2'

Код, который работал для меня:

UPDATE table2
SET the_geom = t1.the_geom
FROM table1 as t1
WHERE table2.address = t1.address AND table2.the_geom <> t1.the_geom
Я знаю, что мой ответ запоздал на 5 лет, но я надеюсь, что это поможет кому-то вроде меня, кто не смог найти это решение.