Как объединить данные из нескольких строк в один столбец в новой таблице? - PullRequest
1 голос
/ 13 января 2012

Как объединить данные из нескольких строк в одной таблице в один столбец в новой таблице?

create table new_paragraphs
(
    id NUMBER
    paragraph CLOB
);

create table old_paragraphs
(
   id
   paragraph CLOB
);

merge into new_paragraphs  a
using (select * from old_paragraphs) b
on (id = id)
when matched then
update set a.paragraph = a.paragraph || b.paragraph;
-- Results in error: unable to get a stable set of rows in the source tables

Приведенное выше исключение.

Ответы [ 2 ]

0 голосов
/ 14 января 2012

Это сработало бы, если бы id был первичным ключом по крайней мере * old_paragraphs * (или если бы он был уникальным для каждого идентификатора, найденного в * new_paragraph *)

Кроме этого, вы хотите использовать псевдонимыв on (id = id), чтобы оно читалось как on (a.id = b.id):

merge into new_paragraphs  a
using (select * from old_paragraphs) b
on (a.id = b.id)
when matched then
update set a.paragraph = a.paragraph || b.paragraph;
0 голосов
/ 13 января 2012

Почему вы делаете MERGE здесь?Почему бы не простой UPDATE (при условии, что ID является первичным ключом обеих таблиц)

UPDATE new_paragraphs a
   SET paragraph = (select a.paragraph || b.paragraph
                      from old_paragraphs b
                     where a.id = b.id)
 WHERE EXISTS (SELECT 1
                 FROM old_paragraphs b
                WHERE a.id = b.id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...