我在BigQuery上运行此查询但是我收到此错误: 错误:标量子查询生成多个元素
我只是想将Resources_Usage表中的Success字段更新为job_events表的成功字段。我无法弄清楚我的查询中有什么问题。
UPDATE Task_Events.Resources_Usage
SET Success = t2.Success
FROM Task_Events.Resources_Usage t1 INNER JOIN Task_Events.job_events
t2 ON t1.job_id = t2.job_id
WHERE t2.Success is not null
答案 0 :(得分:2)
当您使用job_events加入时 - 您最有可能在resource_usage中为每个job_id获取多个事件 - 因此多个t2.Success' 这就是让UPDATE变得困惑的原因,因为它只需要一个t2.success
您需要添加更多条件,以便在resources_usage中每行只生成一个结果。例如,仅使用最后(最近)事件或第一个事件。或某种类型的事件等。
希望这会有所帮助
作为一个选项,您可以尝试GROUP BY将多个元素折叠为预期的元素(注意:写在go - 所以只是一个想法):
UPDATE Task_Events.Resources_Usage
SET Success = MAX(t2.Success)
FROM Task_Events.Resources_Usage t1
INNER JOIN Task_Events.job_events t2
ON t1.job_id = t2.job_id
WHERE t2.Success is not null
GROUP BY t1.job_id
答案 1 :(得分:0)
我不确定为什么该查询会产生该错误。我在UPDATE
。
但是,我认为您打算更像这样的查询:
UPDATE Task_Events.Resources_Usage ru
SET Success = je.Success
FROM Task_Events.job_events je
WHERE je.job_id = ru.job_id AND je.Success is not null;