相关疑难解决方法(0)

BigQuery - 使用子查询和 OR 语句连接多个条件

无论如何要在多个潜在条件下连接两个表?

我目前正在将一些代码从 Postgres 迁移到 Bigquery,在那里我加入了多个潜在的值,例如:

SELECT
 *
FROM
 (
 SELECT
   offer_table.offer_id
   ,customer_table.customer_name
   ,customer_table.visit_count
   ,ROW_NUMBER() OVER (PARTITION BY offer_table.offer_id ORDER BY customer_table.visit_count DESC) AS customer_visit_rank
 FROM
   offer_table
   LEFT JOIN customer_table ON
    (
    offer_table.customer_id = customer_table.customer_id
    OR offer_table.email = customer_table.email
    OR offer_table.phone = customer_table.phone
    )
 ) dummy
WHERE
  customer_visit_rank = 1
Run Code Online (Sandbox Code Playgroud)

我需要这样做是因为我的报价和客户数据对我们的 ID、电子邮件和电话字段的使用不一致,但都是有效的潜在匹配项。如果多个字段有效(例如:id 和 email 匹配),则会有重复的行,我会在使用 ORDER BY 部分进行排名后根据 row_number 列将它们过滤掉。

但是,当我尝试在 BigQuery 中加入多个条件时,我收到以下错误消息:

LEFT OUTER JOIN cannot be used without a condition that is an equality of fields from both sides …

sql join google-bigquery

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

google-bigquery ×1

join ×1

sql ×1