sql server 2008,需要帮助才能编写条件更新语句

sql server 2008,需要帮助才能编写条件更新语句,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个简单的更新说明 Update tbABC Set salary = 1000, name = 'mike' Where Id = 1 我需要在更新薪资时添加一个条件,如果薪资=0,则更改为1000,否则薪资不会更改 我做了研究,发现了一个类似的问题。 我被卡在上面了????部分现在确定要放在那里的内容是salary=salary。这应该行得通 Update tbABC Set salary = CASE WHEN (salary = 0) then 1000 ELSE salary

我有一个简单的更新说明

Update tbABC
Set salary = 1000, name = 'mike'
Where Id = 1
我需要在更新薪资时添加一个条件,如果薪资=0,则更改为1000,否则薪资不会更改

我做了研究,发现了一个类似的问题。

我被卡在上面了????部分现在确定要放在那里的内容是salary=salary。

这应该行得通

Update tbABC
Set salary = CASE WHEN (salary = 0) then 1000 ELSE salary END, 
name = 'mike'
Where Id = 1
这应该行得通

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

除非绝对必要,否则我可能更喜欢使用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;

我真的不相信现实世界中有无条件更新员工姓名的情况,但对他的薪资更新有一些条件。

除非绝对必要,否则我可能更喜欢使用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;

我真的不相信现实世界中有无条件更新员工姓名的情况,但对他的薪资更新有一些条件。

你已经解决了,但你没有意识到。把薪水放在里面就行了。然后,它会将该值更新为与以前相同的值。正如你所说,薪水=薪水。你已经算出来了,但你没有意识到。把薪水放在里面就行了。然后,它会将该值更新为与以前相同的值。正如你所说,薪水=薪水。