Thread: UPDATE FROM syntax

UPDATE FROM syntax

From
Paul Makepeace
Date:
[this didn't apparently make it thru' to pgsql-docs]

Hi, is there any documentation for Pg's UPDATE FROM (apparently
non-standard) syntax? It is mentioned briefly in \h update and not at
all in http://www.postgresql.org/docs/7.3/static/dml-update.html
or http://www.postgresql.org/docs/7.3/static/queries-table-expressions.html
(directly).

I solved my own problem but was still curious since it's non-standard if
there's a "more standard" way of updating a table from another query.

    ALTER TABLE components ADD COLUMN default_body TEXT;

    UPDATE components SET default_body = bb.body
    FROM (SELECT b.body, cpb.component_id
            FROM componentspagesbodies cpb NATURAL JOIN bodies b
           WHERE cpb.page_id IS NULL) AS bb
    WHERE bb.component_id = components.component_id;

(Incidently, I tried UPDATE components c SET ... c.component_id but the
parser wasn't happy with it.)

Paul

(PS and now at least one working UPDATE FROM example is online ;-)

--
Paul Makepeace ................................  http://paulm.com/ecademy

"What is it i am yapping about? Three things: location, location,
 location."
   -- http://paulm.com/toys/surrealism/

Re: UPDATE FROM syntax

From
Bruce Momjian
Date:
Paul Makepeace wrote:
> [this didn't apparently make it thru' to pgsql-docs]
>
> Hi, is there any documentation for Pg's UPDATE FROM (apparently
> non-standard) syntax? It is mentioned briefly in \h update and not at
> all in http://www.postgresql.org/docs/7.3/static/dml-update.html
> or http://www.postgresql.org/docs/7.3/static/queries-table-expressions.html
> (directly).
>
> I solved my own problem but was still curious since it's non-standard if
> there's a "more standard" way of updating a table from another query.
>
>     ALTER TABLE components ADD COLUMN default_body TEXT;
>
>     UPDATE components SET default_body = bb.body
>     FROM (SELECT b.body, cpb.component_id
>             FROM componentspagesbodies cpb NATURAL JOIN bodies b
>            WHERE cpb.page_id IS NULL) AS bb
>     WHERE bb.component_id = components.component_id;
>
> (Incidently, I tried UPDATE components c SET ... c.component_id but the
> parser wasn't happy with it.)
>
> Paul
>
> (PS and now at least one working UPDATE FROM example is online ;-)

Try the UPDATE reference page in the docs.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073