查询失败错误: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'
您可以将查询重写为
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
子句的所有条件必须至少有两列的列
您面临的限制特定于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'