web-dev-qa-db-ja.com

BigQueryとの結合で更新

BigQueryの既存のテーブルとのJOINに基づいてテーブルを更新することは可能ですか?

次のデータベースでこのステートメントを試してみると( 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が予期されます。これをどのように行うべきですか(可能であれば)?

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

PDATEステートメントの構文 を参照してください。 JOINを使用したUPDATEの例もあります。 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を使用する必要があります。

3