BigQuery - 在同一查询的另一部分中引用子查询的结果

时间:2016-12-02 17:35:26

标签: sql google-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?

1 个答案:

答案 0 :(得分:5)

您应该使用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

的详细信息