postgresql: использование временной таблицы в запросе
есть запрос вида
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 запрос, а не в два