小编典典

使用CASE WHEN-ORACLE更新多行

sql

ACCOUNT的结构表如下:

ACCOUNT_ID  | ACCOUNT_STATUS| 
004460721   |      2        | 
042056291   |      5        | 
601272065   |      3        |

我需要使用一条SELECT语句一次更新三行,以便第二列分别为5、3、2。
我使用以下查询,但似乎缺少一些内容

UPDATE ACCOUNT
SET ACCOUNT_STATUS = CASE   
WHEN ACCOUNT_STATUS = '004460721' THEN 5  
WHEN ACCOUNT_STATUS = '042056291' THEN 3  
WHEN ACCOUNT_STATUS = '601272065' THEN 2  
WHERE ACCOUNT_ID IN ('004460721','042056291','601272065')

我的问题是这样吗?如果没有,我可以使用语句吗?CASE WHEN或者我只能选择SUB-SELECT在一个语句中使用它来实现这一点?
请注意,这是为了SQL ORACLE


阅读 211

收藏
2021-03-23

共1个答案

小编典典

好吧,根据您给的小提琴,我尝试了这些,对我有用

create table account(  account_id number primary key,
                           account_status varchar2(30));

insert into account values(1, '5');
insert into account values(2, '3');
insert into account values(3, '2');

select * from account


update account
set account_status= case
when account_id=1 then '2'
when account_id=2 then '5'
when account_id=3 then '3'
END

select * from account

我没有使用where条件

2021-03-23