Re: [SQL] copy one to many?

Поиск
Список
Период
Сортировка
От Bryan White
Тема Re: [SQL] copy one to many?
Дата
Msg-id 001601bdd1f4$c3f9df00$a3f0f6ce@bryan.arcamax.com
обсуждение исходный текст
Ответы Re: [SQL] copy one to many?  (Walt Bigelow <walt@stimpy.com>)
Список pgsql-sql
>This is a follow up to my last question on how to use INSERT INTO to copy
>rows.  I have one more hurdle... how can I copy one or more source rows to
>many dest rows, but with different target library numbers?
>
>I have this:
>INSERT INTO tblspotinfo
> (librarynumber,
> spotnumber,
> audiotypeid
...
> FROM
> tblspotinfo
> WHERE
> librarynumber = '9988';
>
>Is there a way to say, get all records with the library number = '9988'
>and copy them to a list of NEW library numbers?
>
>So source would be librarynumber 9988,
>and dest would be 4457, 4458, 4459, 4460 instead of 6666.
>
>Is SQL capabile of this or do I need a function on the server side to do
>this easily?


I think you can use a sequence to do this.  Look at the man page for
create_sequence.  I think next_seq is the built in function to retrieve the
next id.  You could call that as a column in the select portion of your
statement: ie:
CREATE SEQUENCE myseq start 4457;
INSERT into tblspotinfo (...) SELECT next_seq('myseq'), ... FROM ... WHERE
...;
DROP SEQUENCE myseq;

Of course you would only do the DROP if you were not going to use the
sequence again.




В списке pgsql-sql по дате отправления:

Предыдущее
От: Walt Bigelow
Дата:
Сообщение: copy one to many?
Следующее
От: Chris Johnson
Дата:
Сообщение: Absolute value on int2 or int4 field