Google bigquery 如何在BigQuery中将一个表与两个具有相似字段的不同表连接起来?

Google bigquery 如何在BigQuery中将一个表与两个具有相似字段的不同表连接起来?,google-bigquery,Google Bigquery,我在BigQuery中有3个表。 我需要将第一个(包含ID)连接到其他(包含ID的值列表)。我想得到两个表中ID值的总和: SELECT t0.id, sum(values) FROM t0 LEFT JOIN t1 ON t0.id = t1.id LEFT JOIN t2 ON t0.id = t2.id GROUP BY id 它不适用于错误列名值不明确 最好的方法是什么?选择t0.id,sum(t1.values)+sum(t2.values)作为t0中的sumOfValues t0.

我在BigQuery中有3个表。 我需要将第一个(包含ID)连接到其他(包含ID的值列表)。我想得到两个表中ID值的总和:

SELECT t0.id, sum(values) FROM t0
LEFT JOIN t1 ON t0.id = t1.id
LEFT JOIN t2 ON t0.id = t2.id
GROUP BY id
它不适用于错误
列名值不明确
最好的方法是什么?

选择t0.id,sum(t1.values)+sum(t2.values)作为t0中的sumOfValues
t0.id=t1.id上的左连接t1
t0.id=t2.id上的左连接t2
按id分组

我认为下面更好地反映了您的原始想法

#standardSQL
SELECT id, sum(u.values) 
FROM t0
LEFT JOIN (
  SELECT id, values FROM t1 UNION ALL
  SELECT id, values FROM t2
) u
USING (id)
GROUP BY id

谢谢你的回复。这是我的第一个想法,但我一直在寻找“最好”的方法来让它变得更好,尤其是通过运行时间。我不知道它在理论上是如何工作的,但我认为
UNION
语句比double-join运行得慢。也许我错了,因为我没有任何证据。你知道为什么
UNION
运行缓慢,或者它只是一个神话吗?在我看来——至少在上面这样简单的情况下——UNION比额外连接更便宜、更优化——你可以比较这两种方法的执行计划/统计数据,并看到结果。很高兴知道你们对真实数据的分析结果。同时,我仍然觉得在这里,与工会合作的方式是“首选”的