есть ли способ сделать несколько обновлений на основе другого значения поля ГДЕ, а не СЛУЧАЙ
идея ниже
Благодарность
#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');
Единственная альтернатива, которую я вижу, - это запуск нескольких операторов обновления, по одному для каждого значения почтового индекса. Но это кажется громоздким и нежелательным по сравнению с использованием выражения CASE.
Используйте SQL CASE, который является частью Standard 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')
что не так с использованием CASE здесь?