2016-12-02 83 views
0

我经常在我的查询中遇到以下问题,我在其中构建了一个大型复杂子查询,我想在同一个查询中引用多次(但也许会稍微过滤一下不同):BigQuery - 在同一查询的另一部分中查询子查询的结果

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?

回答

4

您应该使用BigQuery Standard SQL

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' 

WITH Clause

查看更多详细信息
相关问题