我在Bigquery
表A和Table B中有两个表。
表A有两列-- name(String)和value(浮点)。名称列可以包含空值。
表B有3列- start_value(Float),end_value(FLoat)和name(String).这3列不需要任何代价都是空的。
我的目标是更新名称为为null的行的表A。逻辑基本上是标识名称为null的值,然后在表B中找到相应的行,其中
a.value >= b.start_value and a.value <= b.end_value
这样,我必须在一个查询中更新表A中的所有行。我怎样才能做到这一点?
注:表A中没有两行是相同的。
发布于 2018-10-15 22:51:54
UPDATE `project.dataset.tableA` a
SET a.name = b.name
FROM `project.dataset.tableB` b
WHERE a.name IS NULL
AND value BETWEEN start_value AND end_value
发布于 2018-10-19 01:46:43
在这里,您有一个非常适合我的代码:
UPDATE `project.dataset.tableA` a
SET a.name = (
SELECT b.name
FROM `project.dataset.tableB` b
WHERE value BETWEEN start_value AND end_value)
WHERE a.name IS NULL
https://stackoverflow.com/questions/52828550
复制