15

是否可以基于 JOIN 与 BigQuery 中的现有表对表进行更新?

当我在以下数据库(https://bigquery.cloud.google.com/dataset/pfamdb:pfam31)上尝试此语句时,

  UPDATE pfam31.uniprot
  SET uniprot.auto_architecture = uniprot_architecture.auto_architecture
  INNER JOIN
      pfam31.uniprot_architecture using(uniprot_acc)

我得到了与 , 相关的错误INNER JOINWHERE而不是预期的。我应该怎么做(如果可能的话)?

4

2 回答 2

36
UPDATE `pfam31.uniprot` a
SET a.auto_architecture = b.auto_architecture
FROM `pfam31.uniprot_architecture` b
WHERE a.uniprot_acc = b.uniprot_acc
于 2017-11-19T05:14:50.307 回答
5

请参考UPDATE 语句的语法。甚至还有一个关于 UPDATE with JOIN 的示例。您需要使用 FROM 子句,您的查询应该是这样的:

UPDATE pfam31.uniprot
SET uniprot.auto_architecture =
  (SELECT uniprot_architecture.auto_architecture
   FROM pfam31.uniprot_architecture
   WHERE uniprot.uniprot_acc = auto_architecture.uniprot_acc);

这假定uniprot_acc表中的值之间存在 1:1 的关系。如果不是这种情况,您将需要使用LIMIT 1,例如。

于 2017-11-19T05:08:36.640 回答