postgresql: использование временной таблицы в запросе

Рейтинг: 0Ответов: 0Опубликовано: 07.04.2023

есть запрос вида

SELECT 
    func1(field1)
FROM
   (
       SELECT
           func2(field2)
       FROM
           table1
       WHERE
           expression1
   ) AS r

подскажите, а можно ли делать выборку не из большой table1, а из таблицы, сформированной из записей table1, удовлетворяющих условию expression1?

я сейчас делаю это через создание временной таблицы:

CREATE TEMP TABLE tmp1 ON COMMIT DROP AS 
    SELECT
        * 
    FROM 
        table1
    WHERE
        expression1;

SELECT 
    func1(field1)
FROM
   (
       SELECT
           func2(field2)
       FROM
           tmp1
   ) AS r;

а можно ли временную таблицу вставить в сам запрос, чтоб не было 2 независимых команды, что-то на подобии:

SELECT
     (
        SELECT 
            func1(field1)
        FROM
           (
               SELECT
                   func2(field2)
               FROM
                   tmp1
           ) AS r
     )
FROM
    (
        SELECT
            * 
        FROM 
            table1
        WHERE
            expression1;
    ) AS tmp1;

P.S.

у меня есть запрос, который в качестве результата формирует json из нескольких РАЗНЫХ запросов к одной таблице с одинаковым условием, т.е. запрос работает с ОДИНАКОВЫМИ выбранными записями.

поэтому и подумалось, что чтоб не делать одинаковые выборки несколько раз из надо сделать только один раз заранее

и единственный вариант который нашел - создание временной таблицы, поэтому и подумалось, а нельзя ли всё включит в один sql запрос, а не в два

Ответы

Ответов пока нет.