вставка записей из двух разных таблиц в одну таблицу в Oracle - PullRequest
0 голосов
/ 15 сентября 2018

Я хочу вставить данные из двух разных таблиц (скажем, таблицы A и таблицы B) в третью таблицу (таблицу C) в Oracle.

Я написал два разных курсора для выборки данных из таблиц A и B отдельно и заполнил две коллекции на основе этих двух таблиц.

Теперь я хочу вставить данные из этих двух коллекций в третью таблицу (таблица C), как мне это сделать.

Теперь есть два общих столбца, которые присутствуют в обоих столбцах, например, ID и YEARMONTH, эти два столбца есть во всех таблицах (A, B и C).

Я попытался выполнить слияние на основе этих двух полей. но я ищу эффективный и более удобный способ сделать это.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

вставить в таблицу C выберите * из таблицы, где ... союз выберите * из таблицы B, где ...

0 голосов
/ 15 сентября 2018

Вы не предоставили код, который вы написали, поэтому я думаю: курсоры означают PL / SQL. Если вы делаете это в цикле, строка за строкой, это будет медленно, медленно.

Поскольку в обеих таблицах (A и B) есть общие столбцы, я бы предложил сделать это в чистом SQL: объединить эти две таблицы и вставить результат в C. Что-то вроде

insert into c (id, yearmonth, ...)
select a.id, a.yearmonth, ...
from a join b on a.id = b.id;

Убедитесь, что индексы существуют для столбцов, которые вы используете для объединения таблиц. Или, что еще лучше, сравните планы объяснения в обоих случаях (с индексами и без них) и выберите вариант, который кажется наилучшим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...