google-bigquery更新表使用另一个表

时间:2018-04-17 07:01:11

标签: google-bigquery

您好我在BigQuery中有两个表:

TableA:consumerID,consumerSegment

TableB:consumerID

我想做的就是用"找到"更新TableA.consumerSegment。其中TableA.consumerID = TableB.consumerID

我正在使用此声明,但作为回报,我收到错误:

UPDATE `MyTableLongNameA` AS TableA

SET TableA.consumerSegment = "Found"

FROM `MyTableLongNameB` AS TableB

WHERE TableA.consumerID = TableB.ConsumerID

错误是:

  

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

感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:2)

这表示来自TableB的密钥在TableA中有多个匹配项。来自the documentation

  

如果要更新的表中的行与FROM子句中只有一行连接,则该行将更新。

     

如果要更新的表中的行与FROM子句中的多个行连接,则查询会生成运行时错误。

请改为尝试:

UPDATE `MyTableLongNameA` AS TableA
SET TableA.consumerSegment = "Found"
WHERE EXISTS (
  SELECT 1
  FROM `MyTableLongNameB` AS TableB
  WHERE TableA.consumerID = TableB.ConsumerID
)