A 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
.