最近我开始研究 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 中的子查询。我尝试了许多替代方案,但结果彼此不匹配。
最近我开始研究 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 中的子查询。我尝试了许多替代方案,但结果彼此不匹配。
假设这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;
事实上,目前连接谓词不支持子查询。
如果你真的需要这个,你可以为此提交功能请求。我相信很多人都会对此感到高兴。
有一种解决方法。您可以制作它的脚本,例如:
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;