通过加入 BigQuery 进行更新

Update with join with BigQuery

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

当我在以下数据库 (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 JOIN 有关的错误,而应该是 WHERE。我应该怎么做(如果可能的话)?

请参考UPDATE statement syntax。甚至还有一个关于 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,例如。

UPDATE `pfam31.uniprot` a
SET a.auto_architecture = b.auto_architecture
FROM `pfam31.uniprot_architecture` b
WHERE a.uniprot_acc = b.uniprot_acc