在Oracle查询中使用带有更新的案例

时间:2018-07-26 10:39:37

标签: oracle

如何在oracle IDs查询中使用IDsCASE中的WHEN,我尝试了以下方法,但没有成功,

当1、3、5中的用户status_id更新ID到3(即使已经存在3时,是的),并且当状态为2时更新到4。

THEN

1 个答案:

答案 0 :(得分:1)

假设您的状态为varchar,即使它似乎总是包含数字,也可以尝试:

update yourTable
set status_id = case
  when status_id in ('1','3','5')  then '3'
  when status_id = '2' then '4'
  else status_id             -- no changes if status is not in 1, 2, 3, 4
end
where ...

如果是数字,则可以删除''

如果要避免使用else,则需要null部分;例如:

select case when 1=2 then 'a' end from dual

给予null

您可以通过在WHERE子句中添加更多条件来避免这种情况,但这主要取决于您是否始终需要更新该列,即使没有更改也是如此。