在我的 SQL FROM 子句中,我想通过子查询使用动态创建的表:
Select A.Field1,B.Field2
FROM TableA as A, (select Field1,Field2 from TableB) B
Where A.Field1 = B.Field1
BigQuery 是否支持此功能?
在我的 SQL FROM 子句中,我想通过子查询使用动态创建的表:
Select A.Field1,B.Field2
FROM TableA as A, (select Field1,Field2 from TableB) B
Where A.Field1 = B.Field1
BigQuery 是否支持此功能?
您不需要子查询:
Select A.Field1,B.Field2
FROM TableA as A join
TableB as B
on A.Field1 = B.Field1;
但是,是的,根据参考手册,BigQuery 确实支持子查询。
是的,我记得做过类似的事情
SELECT a ,b
FROM Tablea
WHERE a not IN (SELECT a FROM Tableb)
首先让我们正式修复您的查询(假设您使用 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 阶段