Search code examples
sqlpostgresqlsql-updatepostgis

Update multiple rows in a table from another table when condition exists


I have two tables.

Table1 contains companies whose locations are georeferenced with lat/lng coordinates in a column called the_geom

Table2 also contain the same companies from Table1, not georeferenced, along with hundreds of other companies whose addresses are georeferenced.

All I need to do is insert the_geom lat/lng values from Table1 companies into their corresponding entries in Table 2. The common denominator on which these inserts can be based on is the address column.

Simple question, I am sure, but I rarely use SQL.


Solution

  • Assuming that by

    insert "the_geom" lat/lng values

    you actually mean to UPDATE existing rows in 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
    

    Related answer:

    Also assuming that the address column has UNIQUE values.
    Details for UPDATE in the manual.