Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery Google Bigquery基于WHERE的多个更新-需要解决方案吗_Google Bigquery_Where_Updates_Bigquery Standard Sql - Fatal编程技术网

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

Google bigquery Google Bigquery基于WHERE的多个更新-需要解决方案吗,google-bigquery,where,updates,bigquery-standard-sql,Google Bigquery,Where,Updates,Bigquery Standard Sql,是否有基于其他字段值进行多个更新的方法 在哪里,不是案例 想法如下 谢谢 #standardSQL UPDATE dataset.people SET CBSA_CODE = '54620' where substr(zip,1,5) = '99047', SET CBSA_CODE = '31793' where substr(zip,1,5) = '45700' 实际上,CASE表达式是处理此逻辑的典型方式: UPDATE dataset.people SET CBSA_CODE = CA

是否有基于其他字段值进行多个更新的方法 在哪里,不是案例

想法如下

谢谢

#standardSQL
UPDATE dataset.people
SET CBSA_CODE = '54620' where substr(zip,1,5) = '99047',
SET CBSA_CODE = '31793' where substr(zip,1,5) = '45700'

实际上,
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');

我能看到的唯一替代方法是运行多个update语句,每个邮政编码值一个。但是,与使用
CASE
表达式相比,这似乎是笨拙和不可取的。

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');

我能看到的唯一替代方法是运行多个update语句,每个邮政编码值一个。但与使用
大小写
表达式相比,这似乎既笨拙又不可取。

使用SQL大小写,它是标准SQL的一部分(请参阅):


Use SQL CASE是标准SQL的一部分(请参阅):


这里用的箱子有什么问题?这里用的箱子有什么问题?请参阅文件。请参阅文件。