我的结构表 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
最佳答案
好的,根据您提供的 fiddle ,我已经尝试过这些并且对我有用
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 条件
关于sql - 使用 CASE WHEN - ORACLE 更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18760632/