Получить все имена таблиц, содержащие комбинацию столбцов - PullRequest
0 голосов
/ 06 июля 2018

Есть ли способ выбрать все имена таблиц в базе данных, содержащей комбинацию из двух или более столбцов: column1 AND column2? Я думаю, что это не правильный путь:

select table_name from information_schema.columns where column_name = 'column1';

1 Ответ

0 голосов
/ 06 июля 2018

Попробуйте использовать CTE, содержащий array aggregator. Оператор <@ будет искать точную комбинацию элементов.

WITH j AS (
  SELECT table_name, array_agg(column_name::TEXT) AS columns
  FROM information_schema.columns 
  GROUP BY table_name)
SELECT * FROM j
WHERE '{column1,column1}' <@ j.columns

Пример:

WITH j AS (
  SELECT table_name, array_agg(column_name::TEXT) AS columns
  FROM information_schema.columns 
  GROUP BY table_name)
SELECT * FROM j
WHERE '{name,statement}' <@ j.columns;

       table_name       |                              columns                               
------------------------+--------------------------------------------------------------------
 pg_prepared_statements | {name,statement,prepare_time,parameter_types,from_sql}
 pg_cursors             | {name,statement,is_holdable,is_binary,is_scrollable,creation_time}
(2 Zeilen)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...