假设我有一个查询 Q1,我需要运行如下查询:
Q1
union
select *
from (some query that uses Q1 outcome)
我想这样做:
- 不创建任何视图
- 无需运行两次 Q1 查询。
我怎样才能在 PostgreSQL 上做到这一点?
假设我有一个查询 Q1,我需要运行如下查询:
Q1
union
select *
from (some query that uses Q1 outcome)
我想这样做:
我怎样才能在 PostgreSQL 上做到这一点?
您可以为此使用公用表表达式:
甚至:
您还可以按顺序使用多个 CTE:
没有创建视图,也没有运行两次 Q1 查询——好吧,这取决于实现。实际遵循的执行路径取决于优化器和其他几个因素。查询更紧凑和优雅,但这并不意味着它比扩展它更有效。