在TSQL中将IF ELSE子句与UPDATE结合

问题描述

如果满足不同条件,则尝试为表中的行合并UPDATE子句。我正在通过Azure sql上的Tsql进行此操作。

我可以以相互排斥的绿色代码格式运行多个Tsql语句,但我宁愿使用嵌套的IF ELSE语句以使代码更整洁。

这可能吗?

enter image description here

解决方法

使用case表达式一键完成所有操作。

update student set
    p2 = case when total_score > 500 then 'pass' else 'fail' end
where p2 is null;

您可以通过使用case表达式来测试列是否需要更新,从而将以下两个更新组合在一起:

update student set
    p1 = case when p1 is null and age > 20 then 'old' else p1 end,p2 = case when p2 is null then case when total_score > 500 then 'pass' else 'fail' end else p2 end
where p2 is null or p1 is null;

注意:作为设计问题,根据学生的年龄设置列值通常不是一个好主意,因为它只会给您一个时间点,因此您通常需要不断对其进行更新。查询表时进行计算要好得多。