如何排除像WHERE NOT EXISTS这样的记录

时间:2013-07-01 14:47:17

标签: google-bigquery

我想要排除包含存储在exclusion_list表中的关键字的记录。 在典型的DB中,我们可以通过使用WHERE NOT EXISTS短语来完成此操作;

SELECT datetime, server, page, uniq_id, client_req, domain, search_keyword
FROM apache_log a
WHERE NOT EXISTS 
  (SELECT 0 FROM exclusion_list e WHERE regexp_like(a.client_req, e.ex_url))

有没有办法在BigQuery中实现相同的目标?

1 个答案:

答案 0 :(得分:3)

我在bigquery文档中找到SELECT WHERE NOT EXISTS的最接近的是SELECT WHERE NOT IN子句。

SELECT datetime, server, page, uniq_id, client_req, domain, search_keyword
FROM apache_log a
WHERE NOT IN 
  (SELECT 0 FROM exclusion_list e WHERE regexp_like(a.client_req, e.ex_url))

根据文档,它以与SQL IN条件非常相似的方式工作,其中每个参数都被评估,或者与所有其他值一起评估。

  

如果expr与expr1,expr2或者中的任何值匹配,则返回true   括弧。 IN关键字是(expr =。)的有效缩写   expr1 || expr = expr2 || ...)。与IN一起使用的表达式   关键字必须是常量,并且必须与expr的数据类型匹配。

更多信息Here