2016-12-02 130 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

查看更多詳細信息