MySQL使用另一个表的值更新一个表 - 我可以在bigquery中使用它吗?

时间:2017-08-09 18:39:28

标签: google-bigquery

在MySQL中,我可以使用

update TableA, TableB
set TableA.field1 = TableB.field1
where TableA.id = TableB.id

TableA
id field1 field2
1  hello  hi

TableB
id field1 field2
1   world earth

运行查询后,TableA值将更新为

TableA
id field1 field
1  world  hi

在BigQuery中,我不能这样做。似乎我必须遍历TableB,为每个匹配的行更新TableA。 BigQuery拥有庞大的数据。通过TableB循环每个匹配的行,更新查询不会运行良好。

或者出于性能原因,在bigquery中,我可以

  • 从TableA中选择field1,field2,其中id不在TableB的Select id中(如果id不在TableB中,则采用TableA值)
  • 将TableB.field1选为field1,将TableA.field2选为TableA的field2,TableB,其中TableA.id = TableB.id(如果在表B中为Id,则使用TableB.field1值)
  • 联盟上述两项结果

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

  

在BigQuery中,我不能这样做......

你确定可以!!! 使用BigQuery Standard SQL的DML

   
UPDATE `project.dataset.TableA` AS TableA
SET TableA.field1 = TableB.field1
FROM `project.dataset.TableB` AS TableB
WHERE TableA.id = TableB.id