0

最近我开始研究 BigQuery,有些事情让我仍然感到困惑。Big Query 上此查询的替代方法是什么?

select a.abc, c.xyz
from table1 as a
left join table2 as c
on a.abc = c.abc
and c.date = (select t.date from table3 t)

问题是 Big Query 不支持 join 中的子查询。我尝试了许多替代方案,但结果彼此不匹配。

4

2 回答 2

1

假设这table3.date是唯一的,请尝试编写如下查询:

select a.abc, c.xyz
from table1 a left join
     (table2 c join
      table3 t
      on c.date = t.date
     )
     on a.abc = c.abc;

如果 中有重复项table3,您可以将其表述为:

select a.abc, c.xyz
from table1 a left join
     (table2 c join
      (select distinct date
       from table3 t
      ) t
      on c.date = t.date
     )
     on a.abc = c.abc;
于 2021-09-23T11:40:32.160 回答
0

事实上,目前连接谓词不支持子查询。

如果你真的需要这个,你可以为此提交功能请求。我相信很多人都会对此感到高兴。

有一种解决方法。您可以制作它的脚本,例如:

declare date TIMESTAMP;
set date = (select t.date from table3 t);

select a.abc, c.xyz
from table1 as a
left join table2 as c
on a.abc = c.abc
and c.date = date;
于 2021-09-23T10:56:34.417 回答