From: | Marty Scholes <marty(at)outputservices(dot)com> |
---|---|
To: | pgsql-sql <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Inserting data in a table using sub-selects] |
Date: | 2004-03-10 20:56:46 |
Message-ID: | 404F810E.1010707@outputservices.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
INSERT INTO table2 (id, content) (
SELECT id, coalesce(title, '') || ' ' || coalesce(description, '')
FROM table1 t1);
If you want to keep them syncrhonized, in other words, rerun the query
over and over again without having to truncate table2 first or deleting
all of the rows, you can:
INSERT INTO table2 (id, content) (
SELECT id, coalesce(title, '') || ' ' || coalesce(description, '')
FROM table1 t1)
WHERE id NOT IN (
SELECT id
FROM table1);
With Oracle there is a slick way to do a partial outer join that allowed
you to do this without creating a complete list of table1.id in the last
subquery, but I dunno if Pg has an equivalent mechanism.
Andreas Joseph Krogh wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi, I'd like to fill one table with the contents of another table.
Mye schema
> is like this:
>
> CREATE TABLE table1(
> id serial NOT NULL PRIMARY KEY,
> title varchar NOT NULL,
> description varchar
> );
>
> CREATE TABLE table2(
> id int NOT NULL REFERENCES(table1(id) ON DELETE CASCADE,
> content varchar NOT NULL
> );
>
> Now - is there a way I can do something like:
> INSERT INTO table2(id, content) values (select t1.id,
coalesce(t1.title, '')
> || ' ' || coalesce(t1.description, '') as content from table1 t1);
>
> Any hints on how to insert a lot of values at the same time like this?
>
> - --
> Andreas Joseph Krogh <andreak(at)officenet(dot)no>
> Managing Director, Senior Software Developer
> OfficeNet AS
>
> I always do a CVS update before making a patch (unless I forget).
>
> gpg public_key: http://dev.officenet.no/~andreak/public_key.asc
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.2 (GNU/Linux)
>
> iD8DBQFAT3H1UopImDh2gfQRAsa6AJ9jZjNz25w4iVnxNJYY9LJuG0HBLACfZfup
> 1TMzQSi1+YYgNjpcampX6wo=
> =fJA3
> -----END PGP SIGNATURE-----
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
From | Date | Subject | |
---|---|---|---|
Next Message | Jonathan Gardner | 2004-03-10 22:06:48 | Re: Changing primary keys |
Previous Message | Stephan Szabo | 2004-03-10 20:49:34 | Re: Inserting data in a table using sub-selects |