sql - 如何在单个查询 (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' ;
...
必须逐行执行。
有谁知道我如何一次性执行此操作?
先感谢您。
解决方案
利用
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中的演示
推荐阅读
- typo3 - Typo3 Flexform CKE 预设
- jstree - jsTree取消创建节点
- elasticsearch - 更新具有多个数组的 Elasticsearch 文档
- google-apps-script - 搜索列在 Google 电子表格脚本中不起作用
- azure - 如何使用应用程序 ID 及其密钥之一进行身份验证?
- groovy - 无法解析静态方法中的类
- ruby-on-rails - Vue to Rails:我如何发布通过强参数创建嵌套对象?
- java - 如何使用 IMAP java 实现按日期对电子邮件进行排序
- javascript - Firefox mobile navigator.maxTouchPoints 未定义
- php - 添加新记录时计算新百分比