当我从子选择中选择并最终想要对结果进行“不在”时,BQ查询会出现以下错误:
Error: Join attribute is not defined: t1.customer_id
当我用一个简单的where t1.customer_id = 1
更改“not in”部分时,执行查询。
查询看起来不像是一个连接但是从错误中看,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个子选择的连接时,“not in”部分确实有效。
关于如何在这种特殊情况下完成'不在'检查的任何想法?
答案 0 :(得分:5)
这是BigQuery中的SQL不兼容。作为一种解决方法,我认为只使用WHERE customer_id NOT IN (...)
就可以了。