Выберите данные для столбцов, которые есть только в другой таблице - PullRequest
0 голосов
/ 25 мая 2020

У меня есть две таблицы, table1 и table2, у которых есть столбцы, общие для обеих.
Запросы, которые получают имена столбцов каждой таблицы, приведены ниже,

Запрос на получение столбцов из первой таблицы:

select column_name from information_schema.columns 
where table_schema = 'schema1'
and table_name = 'table1';

Запрос на получение столбцов из второй таблицы:

select column_name from information_schema.columns 
where table_schema = 'schema2'
and table_name = 'table2';      

Мне нужно выбрать данные из таблицы2, только столбцы, которые также находятся в таблице1.

Ответы [ 2 ]

1 голос
/ 25 мая 2020

На данный момент у меня нет postrge sql intace, но Dynami c SQL - это то, что вам нужно.

Следующий запрос даст вам имена столбцов, которые появляются в обеих таблицах 1 и таблица 2.

select string_agg(column_name, ',') FROM (
  select column_name from information_schema.columns 
  where table_schema = 'schema1'
  and table_name = 'table1'
  intersect 
  select column_name from information_schema.columns 
  where table_schema = 'schema2'
  and table_name = 'table2'
)

А нужно построить

EXECUTE 'select ' || select string_agg(column_name, ',') FROM (
  select column_name from information_schema.columns 
  where table_schema = 'schema1'
  and table_name = 'table1'
  intersect 
  select column_name from information_schema.columns 
  where table_schema = 'schema2'
  and table_name = 'table2'
) || ' from schema2.table2 '
0 голосов
/ 25 мая 2020

Извините, если есть синтаксическая ошибка при записи из мобильного приложения, вы можете объединить оба набора результатов, чтобы получить общие данные.

select column_name from information_schema.columns T2
JOIN  (select column_name from information_schema.columns where table_schema = 'schema1' and table_name = 'table1') T1
ON T2.COLUMN_NAME = T1.COLUMN_NAME  Where T2.table_schema = 'schema2' and T2.table_name = 'table2'; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...