Google bigquery 键为空时Bigquery合并联接

Google bigquery 键为空时Bigquery合并联接,google-bigquery,Google Bigquery,表1 +---------+-----------+--------+ | user_id | email | action | +---------+-----------+--------+ | 1 | aa@aa.com | open | +---------+-----------+--------+ | 2 | null | click | +---------+-----------+--------+ | 3 | ac@a

表1

+---------+-----------+--------+
| user_id | email     | action |
+---------+-----------+--------+
| 1       | aa@aa.com | open   |
+---------+-----------+--------+
| 2       | null      | click  |
+---------+-----------+--------+
| 3       | ac@ac.com | click  |
+---------+-----------+--------+
| 4       | ad@ad.com | open   |
+---------+-----------+--------+
表2

+---------+-----------+--------+
| user_id | email     | event  |
+---------+-----------+--------+
| 1       | aa@aa.com | sent   |
+---------+-----------+--------+
| null    | ac@ac.com | none   |
+---------+-----------+--------+
| 2       | ab@ab.com | sent   |
+---------+-----------+--------+
| 4       | ad@ad.com | sent   |
+---------+-----------+--------+
我想基于t1.user\u id=t2.user\u id加入,但当密钥为空时,请在t1.email=t2.email上加入

我尝试了多种方式加入bigquery,如下所示:
1.)合并时(t1.用户id,t1.电子邮件)=合并时(t2.用户id,t2.电子邮件)
2.)在t2.user_id不为null的情况下,则t1.user_id=t2.user_id else t1.email=t2.email结束


两者都不起作用。如何做到这一点?

我会将这样的连接拆分为两个单独的:
第一个-按用户\u id加入

SELECT *
FROM table1 AS t1
JOIN table2 AS t2
ON t1.user_id = t2.user_id
第二-通过电子邮件加入第一次加入中丢失的ID

SELECT * 
FROM (
  SELECT * FROM table1
  WHERE user_id NOT IN (
    SELECT t1.user_id
    FROM table1 AS t1
    JOIN table2 AS t2
    ON t1.user_id = t2.user_id
  )
) t1
JOIN (
  SELECT * FROM table2
  WHERE user_id NOT IN (
    SELECT t1.user_id
    FROM table1 AS t1
    JOIN table2 AS t2
    ON t1.user_id = t2.user_id
  )
) t2
ON t1.email = t2.email

谢谢我真的希望它能使用联合。基于链接,这似乎是可能的。但是,我想BigQuery不支持吗?per:join\u谓词:field\u from\u one\u side\u of \u the \u join=field\u from\u the \u other\u side\u of \u of \u the \u join[AND…]SQL有“IS DISTINCT”和“IS NOT DISTINCT”,但我在BigQuery中看不到这一点。