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

Posted

技术标签:

【中文标题】MySQL 用另一个表的值更新一个表 - 我可以在 bigquery 中使用它吗?【英文标题】:MySQL update one table with the values of another table - Could I use it in bigquery? 【发布时间】:2017-08-09 18:39:28 【问题描述】:

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 中,我可以

select field1, field2 from TableA where id not in 从TableB中选择id(如果id不在TableB,取TableA的值) select TableB.field1 as field1,TableA.field2 as field2 from TableA, TableB where TableA.id = TableB.id(如果Id在TableB,则使用TableB.field1值) 合并以上两个结果

有什么建议吗?

【问题讨论】:

【参考方案1】:

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

你当然可以!!! 使用 BigQuery 标准 SQL 的 DML

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

【讨论】:

以上是关于MySQL 用另一个表的值更新一个表 - 我可以在 bigquery 中使用它吗?的主要内容,如果未能解决你的问题,请参考以下文章

用另一个 MySQL 表的值更新一个 MySQL 表(原始表的数据类型是 JSOn)

用另一个表的值更新表

Mysql:用另一个表的选择最大值更新表[重复]

用另一个表上的值更新新添加的列

MYSQL:我想用另一个表中的值更新表中的所有行,其中第一个表中的值等于第二个表

用另一个表的数据更新一个表