0

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

想法在下面

谢谢

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

2 回答 2

2

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

我可以看到的唯一替代方法是运行多个更新语句,每个 ZIP 代码值一个。CASE但与使用表达式相比,这似乎笨拙且不可取。

于 2018-04-30T17:19:24.543 回答
2

使用 SQL CASE,它是标准 SQL 的一部分(参见官方 BQ 文档):

#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')
于 2018-04-30T17:20:03.707 回答