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
が予期されます。これをどのように行うべきですか(可能であれば)?
UPDATE `pfam31.uniprot` a
SET a.auto_architecture = b.auto_architecture
FROM `pfam31.uniprot_architecture` b
WHERE a.uniprot_acc = b.uniprot_acc
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
を使用する必要があります。