【问题标题】:Scalar subquery produced more than one element标量子查询产生了多个元素
【发布时间】:2018-04-14 10:21:13
【问题描述】:

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

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    我不确定为什么该查询会产生该错误。我在您的 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;
    

    【讨论】:

      【解决方案2】:

      当您与 j​​ob_events 一起加入时 - 您很可能会在 resource_usage 中为每个 job_id 获得多个事件 - 因此是多个 t2.Success
      这就是让 UPDATE 感到困惑的原因,因为它只期望一个 t2.success

      您需要添加更多条件以在 resources_usage 中的每行仅产生一个结果。例如,仅使用最后一个(最近的)事件或第一个事件。或某种类型的事件等。

      希望对你有帮助

      作为一种选择,您可以尝试使用 GROUP BY 将多个元素折叠到预期的一个(注意:写在旅途中 - 所以只是一个想法):

      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
      

      【讨论】:

      • 你有机会尝试吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多