繁体   English   中英

Google BigQuery UNION ALL 未按预期工作

[英]Google BigQuery UNION ALL Not Working As Expected

这很好用:

SELECT
DISTINCT query
FROM
(SELECT * FROM (
(SELECT query, impressions FROM a_temp.sqpr1) 
UNION ALL 
(SELECT query, impressions FROM a_temp.sqpr2) 
)
)

这给出了一个错误:

SELECT
DISTINCT query
FROM
(SELECT query, impressions FROM a_temp.sqpr1) 
UNION ALL 
(SELECT query, impressions FROM a_temp.sqpr2) 

具体来说,错误是: UNION ALL 中的查询具有不匹配的列数; 查询 1 有 1 列,查询 2 在 [6:2] 有 2 列

两个查询显然都有 2 列。

BigQuery 将您的查询解析为:

SELECT
DISTINCT query
FROM
(SELECT query, impressions FROM a_temp.sqpr1)

UNION ALL 

(SELECT query, impressions FROM a_temp.sqpr2) 

不像:

SELECT
DISTINCT query
FROM

(SELECT query, impressions FROM a_temp.sqpr1)
UNION ALL 
(SELECT query, impressions FROM a_temp.sqpr2) 

解析器看到的是(SELECT DISTINCT query FROM X) UNION ALL (Y) ,而不是SELECT DISTINCT query FROM (X UNION ALL Y) ,这就是它抱怨列数不匹配的原因:列数不匹配!

带有显式括号分组的第一个查询之所以有效,是因为它强制解析器以后一种形式查看查询,而不是前者,前者具有匹配的列数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM