无论如何要在多个潜在条件下连接两个表?
我目前正在将一些代码从 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 …