Google BigQuery联接问题查询失败错误:ON子句

问题描述 投票:0回答:2

查询失败错误:ON子句必须为AND =每个表中一个字段名称的比较,所有字段名称都以表名为前缀。考虑使用标准SQL .google.com / bigquery / docs / reference / standard-sql /),它允许不相等的JOIN和涉及表达式和残差谓词的比较。

删除最后一行,这个SQL适用于SQL / ANSI。如何解决这个问题?

SELECT b.number, b.state 
FROM [bigquery-public-data:usa_names.usa_1910_2013] as a 
join [bigquery-public-data:usa_names.usa_1910_2013] as b
on a.state = b.state 
and b.state = 'WY'
google-bigquery self-join
2个回答
0
投票

您可以将查询重写为

SELECT b.number, b.state 
FROM [bigquery-public-data:usa_names.usa_1910_2013] as a 
join 
(select number, state from [bigquery-public-data:usa_names.usa_1910_2013] where state='WY') as b
on a.state = b.state 

看起来on子句的所有条件必须至少有两列的列


0
投票

您面临的限制特定于BigQuery Legacy SQL方言 强烈建议Migrate to BigQuery Standard SQL“方言”

下面是BigQuery Standard SQL,并按预期工作

#standardSQL
SELECT b.number, b.state 
FROM `bigquery-public-data.usa_names.usa_1910_2013` AS a 
JOIN `bigquery-public-data.usa_names.usa_1910_2013` AS b
ON a.state = b.state 
AND b.state = 'WY'
© www.soinside.com 2019 - 2024. All rights reserved.