0
我們有一個動態UI查詢構建器,它基於用戶完成的操作構建BigQuery構造。查詢像(大寫):誰瀏覽過的產品 AND和OR與BigQuery中嵌套SELECT子句的組合
- 用戶
- 用戶誰瀏覽過的產品或將它們添加到購物車,下訂單
爲了支持這種查詢,我們最初使用了嵌套的SELECT子句。例如,上面的第二個查詢在SQL中看起來與此類似:
SELECT email FROM users JOIN actions ON users.email = actions.user_id
WHERE email IN (SELECT email FROM users JOIN actions
ON users.email = actions.user_id
WHERE action = 'view_product')
AND action = 'add_product_to_cart'
此工作正常。現在,查詢「查看產品或添加到購物車的用戶」將不會工作,因爲此錯誤 - Semijoin expression must be a part of logical AND。爲了使OR條件下工作,我們願意承擔UNIONs.The查詢的路徑將如下這樣:
SELECT email FROM
(SELECT email FROM users JOIN actions
ON users.email = actions.user_id
WHERE action = 'view_product'),
(SELECT email FROM users JOIN actions
ON users.email = actions.user_id
WHERE action = 'add_product_to_cart')
的問題是,如何支持兩者的結合AND和OR連接詞?由於BigQuery中的UNION顯然不適用於WHERE子句,因此如何組合嵌套子查詢? 具體而言,如何爲上面的第三個項目符號點編寫查詢?
這在傳統SQL中已經可以實現。查詢#2本質上是一樣的,我猜。 UNION本質上是指OR。但是,問題在於將嵌套子查詢與AND和OR相結合,例如,查詢用於查詢產品或將其添加到購物車並放置訂單__的用戶。 – Milind
看看這個編輯是否有幫助。我認爲這個問題起初只是傳統的SQL限制。 –