如何在where子句中传递null = null

时间:2018-11-25 04:04:58

标签: sql google-bigquery

我有一个bigquery select语句,在某些情况下,where子句显示null = null

在这种情况下:

select * from `db.ds.table1` t1
join `db.ds.table2` t2
on t1.first_name = t2.first_name
and t1.last_name = t2.last_name

如您所见,这似乎是在寻找人,但是,在某些情况下,我的公司在桌子上。在这些情况下,将使用first_name,而last_name为空。

这意味着我有一个null = null场景,并且加入失败。

如何告诉bigquery允许null = null,而不必到处放置合并语句?

谢谢

2 个答案:

答案 0 :(得分:3)

使姓氏为可选,并允许姓氏NULL均有效:

SELECT *
FROM `db.ds.table1` t1
INNER JOIN `db.ds.table2` t2
    ON t1.first_name = t2.first_name AND
       (t1.last_name = t2.last_name OR (t1.last_name IS NULL AND t2.last_name IS NULL));

我们也可以尝试使用COALESCE编写查询,但是目前尚不清楚应该使用哪个值代替NULL姓氏。

答案 1 :(得分:2)

active.evaluate(self)

很明显,ifnull等同于合并,因此不确定是否可以接受,因为您提到由于某种原因不想使用合并