Обновление нескольких строк в таблице из другой таблицы при наличии условия
У меня есть две таблицы.
Таблица 1 содержит компании, местоположение которых привязано к координатам lat / lng в столбце the_geom
В таблице 2 также содержатся те же компании из таблицы 1, не привязанные к географической привязке, а также сотни других компаний, адреса которых привязаны к географической привязке.
Все, что мне нужно сделать, это вставить значения the_geom
lat/lng из таблицы 1 компаний в соответствующие записи в таблице 2. Обычное явление знаменателем, на котором могут основываться эти вставки, является столбец address
.
Простой вопрос, я уверен, но я редко использую SQL.
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'
Код, который работал для меня:
Я знаю, что мой ответ запоздал на 5 лет, но я надеюсь, что это поможет кому-то вроде меня, кто не смог найти это решение.UPDATE table2 SET the_geom = t1.the_geom FROM table1 as t1 WHERE table2.address = t1.address AND table2.the_geom <> t1.the_geom