Выберите общие столбцы из двух таблиц - PullRequest
1 голос
/ 29 октября 2019

У меня есть две таблицы

  1. temp_data_holder
  2. temp_data_holder1

Эти две таблицы будут иметь некоторые общие столбцы, но они также могут иметь некоторые дополнительные столбцы, которыеможет присутствовать только в одной таблице. Мне нужен запрос, который выберет общие столбцы из каждой таблицы.

Я могу получить имена общих столбцов, используя следующий запрос

Select column_name 
from all_tab_columns 
where table_name like 'temp_data_holder' 
intersect 
Select column_name 
from all_tab_columns 
where table_name like 'temp_data_holder1';

Есть ли способ использовать этот запрос, чтобы получитьрезультирующие столбцы из каждой таблицы?

Я прошу что-то вроде этого

Select columns=(Select column_name from all_tab_columns where table_name like 'temp_data_holder' intersect Select column_name from all_tab_columns where table_name like 'temp_data_holder1') from temp_data_holder;

Т.е. таблицы будут внутри цикла for, и структура изменитсяпосле каждой итерации, поэтому я не могу просто жестко закодировать имена столбцов

1 Ответ

0 голосов
/ 29 октября 2019

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

 select listagg(column_name,',') within group (order by column_name)
    from (
      select column_name 
      from user_tab_columns 
      where table_name in (t1,t2) 
      group by column_name having count(*) = 2
    );

результирующая строка может быть использована для генерации полезных операторов для сравнения двух таблиц t1 и t2

...