【问题标题】:Update with join with BigQuery通过 BigQuery 加入更新
【发布时间】:2018-05-02 14:17:35
【问题描述】:

是否可以基于 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 JOIN 相关的错误,而应使用 WHERE。我应该怎么做(如果可能的话)?

【问题讨论】:

    标签: join sql-update google-bigquery bigquery-standard-sql


    【解决方案1】:

    请参考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,例如。

    【讨论】:

      【解决方案2】:
      UPDATE `pfam31.uniprot` a
      SET a.auto_architecture = b.auto_architecture
      FROM `pfam31.uniprot_architecture` b
      WHERE a.uniprot_acc = b.uniprot_acc
      

      【讨论】:

        猜你喜欢
        • 2022-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        • 2011-05-23
        • 1970-01-01
        相关资源
        最近更新 更多