pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Joe <dev@freedomcircle.net>
To: Gavin 'Beau' Baumanis <gavinb@eclinic.com.au>
Cc: pgsql-sql@postgresql.org
Subject: Re: Select into
Date: Thu, 20 Mar 2008 08:10:47 -0400
Message-ID: <47E25447.6040109@freedomcircle.net> (raw)
In-Reply-To: <786D2B38-CE0A-41BF-9E70-4DEB22F8D9EF@eclinic.com.au>
References: <94F93C0F-DA95-4435-B253-57C90961DF34@eclinic.com.au>
	<20080320104922.GB18935@a-kretschmer.de>
	<65937bea0803200358i290bdc87hdeca777b593b5df1@mail.gmail.com>
	<786D2B38-CE0A-41BF-9E70-4DEB22F8D9EF@eclinic.com.au>

Gavin 'Beau' Baumanis wrote:
>
> The copy is inside the same table, so I don't understand why it (the 
> required query ) would require any joins.
>
> Ie. I want to copy the contents of a row (but for the id column - of 
> course) into a record in the same table.

I think what you want is something like this:

Given (col1 being the id or PK):

 col1 | col2 |     col3
------+------+---------------
    1 |  123 | first record
    2 |  456 | second record
    3 |  789 | third record

then

update t1  set col2 = t1copy.col2, col3 = t1copy.col3
from t1 as t1copy
where t1.col1 = 1 and t1copy.col1 = 3;

will result in:

 col1 | col2 |     col3
------+------+---------------
    1 |  789 | third record
    2 |  456 | second record
    3 |  789 | third record

So, it is a join ... of a table with a virtual copy of itself.

Joe



view thread (43+ messages)  latest in thread

Message-ID: <47E25447.6040109@freedomcircle.net>
Permalink:  ../47E25447.6040109@freedomcircle.net/
Also on:    postgresql.org/message-id/47E25447.6040109@freedomcircle.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: dev@freedomcircle.net, gavinb@eclinic.com.au
  Subject: Re: Select into
  In-Reply-To: <47E25447.6040109@freedomcircle.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox