Синтаксическая ошибка в Union All из рекурсивного CTE postgresql - PullRequest
0 голосов
/ 02 октября 2018

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

в или около строки "DROP" 7: создайте временную таблицу для всех новых версий AS (SELECT mc.changeset_id, ...

Интересно, можем ли мы создавать и удалять временные таблицы внутри рекурсивной части рекурсивного cte?

create temp table maincompo AS(SELECT * from X)

create temp table allnew AS (SELECT * FROM Y inner join maincompo)
--anchor query starts--
(WITH RECURSIVE mainquery AS ((SELECT * FROM allnew )
--anchor query ends--   

 UNION ALL

 DROP TABLE maincompo
 DROP TABLE allnew

 create temp table maincompo AS(SELECT * from X inner join mainquery)
 create temp table allnew AS (SELECT * FROM Y inner join maincompo)
 SELECT * from allnew )

 SELECT * from mainquery)

Возможно ли что-то подобное ??, имея в виду, что временные таблицы в Union ALL должны бытьсозданный каждый что-то добавляется к якорному запросу из рекурсивного запроса.

...