首页 > 解决方案 > 如何在单个查询 (PSQL) 中更新一列中的不同值?

问题描述

我需要根据“图例”更新单个列中的多个值(因为没有更好的词)。

假设这是我当前的表(客户)

客户名称 银行
威廉 01
哈利 02
约翰 05
杰克 01
马修 03

而这就是“传说”

这个图例在数据库中不存在,它只是用来解释我的例子。它只是一种呈现相应值的方式

银行号码 银行
01 追赶
02 美国银行
03 摩根大通
04 富国银行
05 花旗集团

我想更新客户表以显示银行名称而不是银行编号。当我第一次尝试这样做时,它看起来像这样:

update CUSTOMERS
   set BANK = 'Chase'
   where BANK = '01' ;

update CUSTOMERS
   set BANK = 'BankOfAmerica'
   where BANK = '02' ;
...

必须逐行执行。

有谁知道我如何一次性执行此操作?

先感谢您。

标签: sqlpostgresqlsql-update

解决方案


利用

UPDATE CUSTOMERS
SET BANK = CASE
            WHEN BANK = '01' THEN 'Chase'
            WHEN BANK = '02' THEN 'BankOfAmerica'
            WHEN BANK = '03' THEN 'JPMorgan'
            WHEN BANK = '04' THEN 'WellsFargo'
            WHEN BANK = '05' THEN 'Citigroup'
           END

db<>fiddle中的演示


推荐阅读