当条件存在时,从另一个表更新表中的多个行

Joh*_*ohn 11 sql postgresql postgis sql-update

我有两张桌子.

表1包含公司,其位置在名为的列中使用lat/lng坐标进行地理配准the_geom

表2还包含来自Table1的相同公司,而不是地理参考,以及其他数百个地址为地理参考的公司.

我需要做的就是将Table1公司的the_geomlat/lng值插入表2中的相应条目.这些插入可以基于的共同点是列.address

简单的问题,我确定,但我很少使用SQL.

Erw*_*ter 23

假设通过

插入"the_geom"lat/lng值

你实际上是要更新 table2中的现有行:

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
Run Code Online (Sandbox Code Playgroud)

还假设address列具有UNIQUE值.
详细介绍UPDATE这里的优秀手册.


lev*_*ter 6

我遇到了类似的问题,但是当我尝试上述解决方案时,出现了类似的错误

'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
Run Code Online (Sandbox Code Playgroud)

我知道我的回答晚了 5 年,但我希望这能帮助像我这样找不到此解决方案的人。


Jay*_*Jay 5

如果您是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
Run Code Online (Sandbox Code Playgroud)

所有功劳归OP。