标量子查询产生了多个元素

时间:2017-11-02 01:13:14

标签: sql google-bigquery

我在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

2 个答案:

答案 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;