使用其他表格中的多个值更新行-BigQuery

时间:2018-10-16 05:36:28

标签: sql-update google-bigquery

我在# random sampling of one location ori <- data.frame(spsample(x = grid, n= 1, type = 'random')) # select randomly 20 distances between 0 and 2 n.point <- 20 h <- rnorm(n.point, 1:2) # empty dataframe dxy <- data.frame(matrix(nrow=n.point, ncol=2)) # take a random angle from the randomly selected location and make a dataframe of the new distances from the original sampling points, in a random direction angle <- runif(n = n.point,min=0,max=2*pi) dxy[,1]= h*sin(angle) dxy[,2]= h*cos(angle) cluster <- data.frame(x=rep(NA, 20), y=rep(NA, 20)) cluster$x <- ori$coords.x1 + dxy$X1 cluster$y <- ori$coords.x2 + dxy$X2 # make a spatial object and plot coordinates(cluster)<- ~ x+y plot(grid) plot(cluster, add=T, col='green') plot(random.pt, add=T, col= 'red') plot(regular.pt, add=T, col= 'blue') 中有两个表表A 表B

表A有两列-名称(字符串)和(浮点数)。 “名称”列可以包含值。

表B具有3列-起始值(浮点数),结束值(浮点数)和名称(字符串)。这三列将不留任何空白。

我的目标是为名称为空的行更新表A。逻辑基本上是确定 name 为空的值,然后在表B中找到对应的行,其中

Bigquery

这样,我必须在单个查询中更新表A中的所有行。我该如何实现?

注意:表A中的两行都不会相同。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

在这里,您的代码对我而言是完美的:

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