Использовать результаты запроса в список SELECT - PullRequest
0 голосов
/ 19 марта 2020

Я хотел бы выбрать все столбцы таблицы, кроме одного.

Моим первым шагом было следовать примеру, приведенному в этом ответе . С чем-то таким:

 SELECT string_agg(quote_ident(attname), ', ' ORDER BY attnum)
 FROM pg_attribute
 WHERE attrelid = 'public.my_table'::regclass
   AND NOT attisdropped
   AND attnum > 0
   AND attname <> 'bad_column'

Это создает строку, как и ожидалось. Но теперь я хочу использовать это для запроса строк моей таблицы. Если мы назовем результат сверху subset_columns, то я хотел бы сделать запрос:

SELECT subset_columns
FROM my_table
LIMIT 10;

Но я не уверен, как сгенерировать эту переменную subset_columns, и если этот стиль запроса даже возможно в postgresql?

1 Ответ

2 голосов
/ 19 марта 2020

В PostgreSQL такой функции нет. Вы можете сделать это только в pl / Pg SQL (или другом pl / *), но не в обычном SQL и только если вы хотите сохранить значения во временной таблице. Ниже вы найдете, как вы можете создать переменную pl / Pg SQL:

WITH subset_columns AS (
      SELECT string_agg(quote_ident(attname), ', ' ORDER BY attnum)
       FROM pg_attribute
       WHERE attrelid = 'public.my_table'::regclass
       AND NOT attisdropped
       AND attnum > 0
       AND attname <> 'bad_column'
)

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

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