我经常在我的查询中遇到以下问题,我在这个问题中构建了一个大型复杂的子查询,我想在同一个查询中引用多次(但可能会稍微过滤一下):
Select * FROM (BIG SUB QUERY WHERE field='one') as a
INNER JOIN
(SAME BIG SUB QUERY WHERE field = 'two') as b
ON a.id = b.id
我想避免使用临时表,因为我正在使用BigQuery并且只想执行一个查询(为了速度)。有没有办法保持子查询并在别处引用它们?如果我复制并粘贴BIG SUB QUERY文本,Big Query是否会被优化以有效地运行几乎相同的SUB QUERIES?
答案 0 :(得分:5)
WITH BIG_SUB_QUERY AS (
YOUR
BIG SUB QUERY
HERE
)
SELECT * FROM BIG_SUB_QUERY AS a
INNER JOIN BIG_SUB_QUERY AS b
ON a.id = b.id AND a.field='one' AND b.field='two'
的详细信息