Google Bigquery基于WHERE的多个更新 - 需要一个解决方案

时间:2018-04-30 17:13:36

标签: google-bigquery where updates standard-sql

有没有办法根据其他字段值进行多次更新  在哪里,不是CASE

想法在下面

感谢

$stateProvider.state('errorPage', {
  templateProvider: function ($timeout, $stateParams) {
    return $timeout(function () {
      return '<button ui-sref="'+$stateParams.latestState+'"></button>'
    }, 100);
  }
})

2 个答案:

答案 0 :(得分:2)

使用SQL CASE,它是标准SQL的一部分(请参阅official BQ docs):

#standardSQL
UPDATE dataset.people
SET CBSA_CODE = CASE
  WHEN substr(zip,1,5) = '99047' THEN '54620'
  WHEN substr(zip,1,5) = '45700' THEN '31793'
END
WHERE substr(zip,1,5) IN('99047', '45700')

答案 1 :(得分:1)

CASE表达式实际上是处理此逻辑的典型方式:

UPDATE dataset.people
SET CBSA_CODE = CASE SUBSTR(zip, 1, 5)
                    WHEN '99047' THEN '54620'
                    WHEN '45700' THEN '31793' END
WHERE
    SUBSTR(zip, 1, 5) IN ('99047', '45700');

我能看到的唯一替代方法是运行mutliple更新语句,每个邮政编码值一个。但与使用CASE表达式相比,这似乎不实用且不受欢迎。