Thread: Inserting data in a table using sub-selects

Inserting data in a table using sub-selects

From
Andreas Joseph Krogh
Date:
-----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@officenet.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-----


Re: Inserting data in a table using sub-selects

From
Stephan Szabo
Date:
On Wed, 10 Mar 2004, 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);

I think you mostly just want to remove the values():

Insert into table2(id, content) select t1.id, coalesce(t1.title, '')|| ' ' || coalesce(t1.description, '') as content
fromtable t1;