1

我有一个简单的更新声明。

Update tbABC
Set salary = 1000, name = 'mike'
Where Id = 1

我需要在更新工资时添加一个条件,如果工资= 0,则更改为1000,否则工资不会更改。

我做了我的研究,发现了一个类似的问题。 在 sql 中使用条件更新语句

Update tbABC
Set salary = CASE WHEN (salary = 0) then 1000 ELSE ??????? END, 
    name = 'mike'
Where Id = 1

我被卡住了???部分。现在确定放在那里使它成为薪水=薪水。

4

2 回答 2

2

这应该工作

Update tbABC
Set salary = CASE WHEN (salary = 0) then 1000 ELSE salary END, 
name = 'mike'
Where Id = 1
于 2013-07-11T00:28:44.200 回答
2

除非绝对必要,否则我可能更喜欢使用 WHERE 子句而不是复杂的 CASE 函数。简化,这将给出:

update tbABC set salary=1000, name='mike'   -- using condition for both field updates
where Id=1 and salary=0;

或者保留交易的确切逻辑:

update tbABC set salary=1000      -- by ID & only if second condition met
where Id=1 and salary=0;

update tbABC set name='mike'      -- by ID.
where Id=1;

我真的不相信有无条件更新员工姓名的真实案例,但对他的薪水更新有一些条件。

于 2013-07-11T00:38:24.770 回答