我正在尝试使用 SQLAlchemy 生成一个涉及 CTE 和联合的查询。不幸的是,每当我应用联合时,生成的 SQL 不包括定义的 CTE。
这是包含 WITH 的 SQL,没有 UNION:
(Pdb) import sqlalchemy as sa
(Pdb) print str(sa.select([sa.select([sa.sql.null().label('a1')]).cte('bb')]))
WITH bb AS
(SELECT NULL AS a1)
SELECT bb.a1
FROM bb
现在是相同的查询,但调用了联合:
(Pdb) print str(sa.select([sa.select([sa.sql.null().label('a1')]).cte('bb')]).union_all(sa.select([sa.sql.null().label('b1')])))
SELECT bb.a1
FROM bb UNION ALL SELECT NULL AS b1
我希望联合调用的查询仍然包含 WITH,但事实并非如此。