0

在我的 SQL FROM 子句中,我想通过子查询使用动态创建的表:

Select A.Field1,B.Field2
FROM TableA as A, (select Field1,Field2 from TableB) B
Where A.Field1 = B.Field1

BigQuery 是否支持此功能?

4

3 回答 3

3

您不需要子查询:

Select A.Field1,B.Field2
FROM TableA as A join
     TableB as B
     on A.Field1 = B.Field1;

但是,是的,根据参考手册,BigQuery 确实支持子查询。

于 2013-08-10T20:45:59.653 回答
0

是的,我记得做过类似的事情

SELECT a ,b
FROM Tablea
WHERE a not IN (SELECT a FROM Tableb)
于 2016-05-11T23:18:47.750 回答
0

首先让我们正式修复您的查询(假设您使用 BigQuery Legacy SQL)
请注意,在 Legacy SQL 中,逗号不是用作 JOIN 而是用作 UNION ALL

所以你查询,工作,应该如下所示

SELECT A.Field1, B.Field2
FROM TableA AS A 
JOIN (SELECT Field1, Field2 FROM TableB) AS B
ON A.Field1 = B.Field1

当然,在您的特定示例中,您不需要子选择,但我认为这只是简化的示例,所以我不会朝着这个方向前进,其他答案已经指出了这一点

最后,关于 BigQuery 中的子查询
BigQuery Legacy SQL 支持table subquery在 FROM 和 FLATTEN 以及半或反半连接(只有一个字段)中非常有限地使用子查询 -
您可以在此处找到详细信息https://cloud.google .com/bigquery/query-reference

另一方面,BigQuery 标准 SQL 为子查询提供范围支持 - 用于表子查询和表达式子查询
您可以在此处查看更多信息https://cloud.google.com/bigquery/sql-reference/query-syntax#subqueries 注意:BigQuery标准 SQL 版本尚处于 Alpha 阶段

于 2016-05-12T04:57:08.050 回答