【发布时间】:2015-09-28 15:30:32
【问题描述】:
我在 BigQuery 中的多个键上的左外连接遇到了一些奇怪的问题。如果其中一个键是右表上的null,则它不匹配,因此它将null 放入右表的所有值中。
如果我有 2 张桌子
Table1 Table2
------------ ----------------
k1 |k2 |v3 k1 |k2 | v4
------------ ----------------
foo|boo |hey foo|NULL| you
bar|test|yo bar|test| hi
foo|NULL|hey
我做以下加入
SELECT t1.k1, t1.k2, t1.v3, t2.v4 FROM [Table1] t1
LEFT OUTER JOIN EACH [Table2] t2
ON t1.k1=t2.k1 AND t1.k2=t2.k2
我得到这样的结果
t1_k1|t1_k2|t1_v3|t2_v4
-----------------------
foo |boo |hey |NULL --No match here so NULL in t2_v4 it's ok
bar |test |hey |hi --It matches here on bar and test
foo |NULL |hey |NULL --It doesn't match on foo NULL.
我希望最后一行是
foo |NULL |hey |you
这是预期的行为吗?我的意思是NULL 上没有匹配项。
有没有其他方法可以产生我想要的结果?
【问题讨论】:
-
其他一些 SQL 有“IS NOT DISTINCT FROM”,但 BigQuery 没有。更多信息请参见“如何重写 IS DISTINCT FROM 和 IS NOT DISTINCT FROM?” stackoverflow.com/questions/10416789/…
标签: google-bigquery