如何在oracle IDs
查询中使用IDs
和CASE
中的WHEN
,我尝试了以下方法,但没有成功,
当1、3、5中的用户status_id更新ID到3(即使已经存在3时,是的),并且当状态为2时更新到4。
THEN
答案 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
子句中添加更多条件来避免这种情况,但这主要取决于您是否始终需要更新该列,即使没有更改也是如此。