update case when then else end用法
时间: 2023-11-08 20:06:05 浏览: 271
update case when then else end 是 SQL 语言中的一种条件更新语句,用于根据条件更新表中的数据。其基本语法如下:
```
UPDATE 表名 SET 列名 = CASE WHEN 条件1 THEN 值1
WHEN 条件2 THEN 值2
...
ELSE 值n
END
WHERE 条件;
```
其中,CASE WHEN THEN ELSE END 是一个条件表达式,用于根据不同的条件返回不同的值。在 UPDATE 语句中,它被用于更新指定列的值。
举个例子,假设有一个学生表(student),其中包含学生的姓名(name)、年龄(age)和性别(gender)三个字段。现在需要将所有女生的年龄加 1,男生的年龄不变。可以使用如下 SQL 语句:
```
UPDATE student SET age = CASE WHEN gender = '女' THEN age + 1 ELSE age END WHERE 1=1;
```
这条语句会将 student 表中所有女生的年龄加 1,男生的年龄不变。
相关问题
mysql case when then else end用法
MySQL中的CASE语句用于在查询中根据条件选择不同的结果。它可以有多个WHEN子句和一个可选的ELSE子句。
基本语法如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
```
在上述语法中,条件(condition)是要满足的条件,结果(result)是与满足条件时返回的结果。
以下是一个示例,演示如何使用CASE语句:
```
SELECT name, age,
CASE
WHEN age < 18 THEN '未成年'
WHEN age >= 18 AND age < 40 THEN '青年'
WHEN age >= 40 AND age < 60 THEN '中年'
ELSE '老年'
END AS age_group
FROM users;
```
上述查询将根据用户的年龄将其归类为不同的年龄组,并返回相应的结果。
CASE语句也可以用于更新操作,例如:
```
UPDATE users
SET status =
CASE
WHEN age < 18 THEN '未成年'
WHEN age >= 18 AND age < 40 THEN '青年'
WHEN age >= 40 AND age < 60 THEN '中年'
ELSE '老年'
END;
```
上述更新操作将根据用户的年龄将其状态更新为相应的值。
希望以上解答对您有帮助!如有任何问题,请随时提问。
DECLARE @nmSupport NUMERIC(14,4),@nmOutst NUMERIC(14,4),@chPart VARCHAR(16) SELECT @chPart = 'XXX' SELECT @nmOutst = 0 SELECT @nmSupport = 0 UPDATE acdb.PAC06.AC06004A SET nmSupport = CASE WHEN chPart = @chPart THEN CASE WHEN nmQty > @nmOutst THEN @nmOutst ELSE nmQty END ELSE CASE WHEN nmQty > nmOutst THEN nmOutst ELSE nmQty END END, nmOutst = CASE WHEN chPart = @chPart then case when @nmOutst>=@nmSupport then @nmOutst-@nmSupport else 0 end else nmOutst-nmSupport END, @nmOutst = CASE WHEN chPart = @chPart then case when @nmOutst>=@nmSupport then @nmOutst-@nmSupport else 0 end else nmOutst-nmSupport END, @nmSupport = case when chPart = @chPart then case when nmQty > @nmOutst then @nmOutst else nmQty end ELSE CASE WHEN nmQty > nmOutst THEN nmOutst ELSE nmQty END end, @chPart = chPart
这段代码是一个 SQL Server 的存储过程或者脚本,其中包含了一些变量的定义和赋值。具体来说,这段代码的作用是:
1. 声明了三个变量 @nmSupport、@nmOutst 和 @chPart,分别是数值类型和字符类型;
2. 把 @chPart 变量的值设为 'XXX';
3. 把 @nmOutst 变量的值设为 0;
4. 把 @nmSupport 变量的值设为 0;
5. 更新了 acdb.PAC06.AC06004A 表中的 nmSupport 和 nmOutst 字段,具体更新方式如下:
- 如果 chPart 字段等于 @chPart 变量的值,则 nmSupport 字段的值为 @nmOutst 和 nmQty 两者中较小的一个,nmOutst 字段的值为 @nmOutst 和 @nmSupport 的差值(如果 @nmOutst 大于等于 @nmSupport),或者为 0(如果 @nmOutst 小于 @nmSupport);
- 如果 chPart 字段不等于 @chPart 变量的值,则 nmSupport 字段的值为 nmQty 和 nmOutst 两者中较小的一个,nmOutst 字段的值为 nmOutst 和 nmSupport 的差值;
6. 最后,更新了 @nmOutst、@nmSupport 和 @chPart 变量的值,使其与更新后的表中的对应字段值相同或者符合上述条件。
阅读全文