2013-07-01 29 views
2

我想排除包含存儲在exclusion_list表中的關鍵字的記錄。 在典型的數據庫中,我們可以使用下面的WHERE NOT EXISTS短語來做到這一點;如何排除像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中實現相同的方法?

回答

3

我可以在大查詢文檔中找到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條件的作品,其中每個參數與所有其他值來評價,然後進行或運算的文檔。

Returns true if expr matches expr1, expr2, or any value in the parentheses. The IN keyword is an efficient shorthand for (expr = expr1 || expr = expr2 || ...). The expressions used with the IN keyword must be constants and they must match the data type of expr.

更多信息Here

+0

感謝您的回答,但看起來BQ不允許不在。 錯誤:在第3行第7列遇到「」。期望以下之一: – user2414055

+0

是的,確實,答案中的示例缺少必須不在...中的字段working query:SELECT top(state, 10),COUNT(*) FROM [publicdata:samples.natality] WHERE state not IN(「TX」,「CA」) –