updating table rows in postgres using subquery updating table rows in postgres using subquery postgresql postgresql

updating table rows in postgres using subquery


Postgres allows:

UPDATE dummySET customer=subquery.customer,    address=subquery.address,    partn=subquery.partnFROM (SELECT address_id, customer, address, partn      FROM  /* big hairy SQL */ ...) AS subqueryWHERE dummy.address_id=subquery.address_id;

This syntax is not standard SQL, but it is much more convenient for this type of query than standard SQL. I believe Oracle (at least) accepts something similar.


You're after the UPDATE FROM syntax.

UPDATE   table T1  SET   column1 = T2.column1 FROM   table T2   INNER JOIN table T3 USING (column2) WHERE   T1.column2 = T2.column2;

References


If there are no performance gains using a join, then I prefer Common Table Expressions (CTEs) for readability:

WITH subquery AS (    SELECT address_id, customer, address, partn    FROM  /* big hairy SQL */ ...)UPDATE dummySET customer = subquery.customer,    address  = subquery.address,    partn    = subquery.partnFROM subqueryWHERE dummy.address_id = subquery.address_id;

IMHO a bit more modern.