满足CASE WHEN条件 set多个字段的值
时间: 2024-05-14 21:17:50 浏览: 140
可以使用以下语法实现:
```
UPDATE table_name
SET
column1 = CASE
WHEN condition1 THEN value1
WHEN condition2 THEN value2
ELSE default_value
END,
column2 = CASE
WHEN condition1 THEN value3
WHEN condition2 THEN value4
ELSE default_value
END
WHERE condition;
```
其中,`column1` 和 `column2` 是要更新的字段名,`condition1` 和 `condition2` 是条件,`value1`、`value2`、`value3`、`value4` 是对应的值,`default_value` 是当所有条件都不满足时的默认值。
例如,更新表`students`中`score`和`status`字段的值,当`score`大于等于80时,`status`为`pass`,否则为`fail`,同时将`update_time`字段更新为当前时间:
```
UPDATE students
SET
score = CASE
WHEN score >= 80 THEN score
ELSE score
END,
status = CASE
WHEN score >= 80 THEN 'pass'
ELSE 'fail'
END,
update_time = NOW()
WHERE student_id = 123;
```
这个例子中,由于`score`的值不会改变,因此`value1`和`value2`都是`score`。
阅读全文