Tsql 使用最多2个值更新列值

Tsql 使用最多2个值更新列值,tsql,sql-server-2008,Tsql,Sql Server 2008,我想用当前列值或我传递的新值的最大值更新列。在伪代码中: 更新表1设置员工数=最大值(员工数,30),其中id=23 因此,在上述情况下: 如果员工当前为20,则新值将变为30 如果员工当前为50,则该值将保持为50 我该怎么做?是否有一个简单的标准函数可用(我不希望使用用例语句) 谢谢 更新表1 Update table1 set employees = (case when employees < 30 then 30 else employees end) where id = 23

我想用当前列值或我传递的新值的最大值更新列。在伪代码中:

更新表1设置员工数=最大值(员工数,30),其中id=23

因此,在上述情况下: 如果员工当前为20,则新值将变为30 如果员工当前为50,则该值将保持为50

我该怎么做?是否有一个简单的标准函数可用(我不希望使用用例语句)

谢谢

更新表1
Update table1
set employees = (case when employees < 30 then 30 else employees end)
where id = 23
设置员工=(员工人数小于30人时,则30人结束) 其中id=23
更新表1
设置员工=(员工人数小于30人时,则30人结束)
其中id=23

您可以使用
where
子句仅更新
员工<30
的行:

update table1
set employees = 30
where id = 23 and employees < 30
更新表1
设置员工数=30
其中id=23,员工<30

您可以使用
where
子句仅更新
员工<30
的行:

update table1
set employees = 30
where id = 23 and employees < 30
更新表1
设置员工数=30
其中id=23,员工<30

对不起,我很好奇,但为什么要将列更改为当前值?如果你需要的话,我可以找到一个脚本来让你的服务器更慢。对不起,我很好奇,但是你为什么要将一列更改为它的当前值呢?如果你需要,我可以找到一个脚本来降低你的服务器速度更容易。谢谢!很好的建议,但不完全是我需要的。我的错误,我应该澄清得更好:我想在多个列上运行MAX语句(最多100列)。所以一个语句看起来更像这样:更新表1设置employees=MAX(employees,30),streetname=MAX(streetname,'Abbey road')营业额=MAX(营业额,500000),其中id=23@Floran,在这种情况下,我想我的答案对你有用,你只需要多个
case
语句。
case
语句的作用与MAX函数相同。虽然@Andomar仍然有更好的解决方案,如果你只更新一列。谢谢!很好的建议,但不完全是我需要的。我的错误,我应该澄清得更好:我想在多个列上运行MAX语句(最多100列)。所以一个语句看起来更像这样:更新表1设置employees=MAX(employees,30),streetname=MAX(streetname,'Abbey road')营业额=MAX(营业额,500000),其中id=23@Floran,在这种情况下,我想我的答案对你有用,你只需要多个
case
语句。
case
语句的作用与MAX函数相同。尽管@Andomar仍然有更好的解决方案,如果您只更新一列。