sql - 使用 CASE WHEN - ORACLE 更新多行

标签 sql oracle

我的结构表 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/

相关文章:

MySQL 错误代码 1064 语法错误

sql - 一次将字符串中的多个字符转换为另一个字符?

Oracle 查询获取最新表或存储过程架构更改?

c# - 就性能而言,C# 的 ToUpper 或 SQL 中的 Upper 函数哪个更好

java - JBOSS EAP 7.1连接oracle 12c数据库

mysql - SQL 查询左连接问题

mysql - 数据库设计,使一个表指向多个和某种递归指针

java - 在 H2 插入语句中转义完整字符串

mysql - 将一个表中的总和添加到第二个表

Oracle - 如何从 YEAR、WEEKNUM 和 WEEKDAY 获取日期?