当我从子选择中进行选择并最终想对结果进行“不在”时,BQ 查询会出现以下错误:Error: Join attribute is not defined: t1.customer_id
例如,当我使用简单的 where t1.customer_id = 1
更改“不在”部分时,查询将执行。
该查询看起来不像连接,但从错误来看,BigQuery 似乎认为它是。
select t1.customer_id , GROUP_CONCAT(t1.id) from (
select customer.id as customer_id, id
from (TABLE_QUERY(redacted , 'table_id in ( "x_201502", "x_201503")'))
where created >= '2014-09-05 00:00:00'
and created < '2015-03-04 00:00:00'
group by customer_id, id
) t1
where t1.customer_id not in (
select customer.id as customer_id
from (TABLE_QUERY(redacted , 'table_id in ("y_201503")'))
where created >= '2015-03-03 18:55:59'
group by customer_id
)
group by t1.customer_id;
我最初尝试将“not in”子选择放在子选择中,但 BQ 也为该方法抛出了错误,因此我正在尝试这种构造。请注意,在跟随 2 个子选择的连接时,“不在”部分确实有效。
关于如何在这种特殊情况下完成“不在”检查的任何想法?
最佳答案
这是 BigQuery 中的 SQL 不兼容问题。作为一种解决方法,我认为只使用 WHERE customer_id NOT IN (...)
应该可以。
关于google-bigquery - 没有加入的 BigQuery 查询会在 "not in"使用中出现加入错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28862789/