在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;

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...