mysql case when 例子
时间: 2023-07-06 16:43:41 浏览: 94
下面是一个 MySQL 中使用 CASE WHEN 的例子:
假设有一个表格叫做 `employees`,其中包含员工姓名、年龄和工资信息。我们想要根据员工的年龄来给他们的工资加一个额外的奖金。我们可以使用 CASE WHEN 语句来实现:
```
SELECT
name,
age,
salary,
CASE
WHEN age < 30 THEN salary + 1000
WHEN age >= 30 AND age < 40 THEN salary + 2000
WHEN age >= 40 AND age < 50 THEN salary + 3000
ELSE salary + 4000
END AS bonus
FROM
employees;
```
上面的语句会根据员工的年龄来添加相应的奖金,然后将包括奖金在内的工资信息返回。注意,这里使用了 `CASE WHEN` 语句来实现条件判断,可以根据需要添加更多的条件分支。
相关问题
MYSQL CASE WHEN 使用
MySQL的CASE WHEN语句是一种条件判断表达式,用于在SQL查询中根据指定的条件返回不同的结果值。它的基本语法结构如下:
```sql
SELECT column_name,
CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
[ ... ]
ELSE default_result
END AS case_expression
FROM table_name;
```
在这个结构中:
- `column_name`是你想要改变的列名。
- `condition_1`, `condition_2`是你要测试的布尔条件,如果满足,则会执行相应的`result_1`或`result_2`。
- 如果所有条件都不满足,你可以设置一个`ELSE`部分,返回默认的结果`default_result`。
- `AS case_expression`用于给处理后的数据起一个新的别名。
举个例子,假设你想计算某个表中学生的成绩等级,可以这样做:
```sql
SELECT student_id,
CASE
WHEN score > 90 THEN '优秀'
WHEN score BETWEEN 80 AND 90 THEN '良好'
ELSE '及格'
END AS grade
FROM students;
```
这将根据学生的分数返回他们的等级。
mysql case when 更新
`CASE WHEN` 语法在 MySQL 中用于条件判断和选择性的数据更新操作。它允许你在 SQL 查询中基于某个表达式的结果来进行不同的操作。
基本结构如下:
```sql
UPDATE table_name SET column = CASE
WHEN condition THEN value
ELSE default_value
END
[WHERE some_condition];
```
这里是一个具体的例子说明如何在更新数据时使用 `CASE WHEN`:
假设我们有一个名为 `students` 的表,其中包含 `id`, `name`, 和 `grade` 列,现在我们要将所有成绩小于60的学生的成绩更新为60分。
```sql
UPDATE students
SET grade = CASE
WHEN grade < 60 THEN 60
ELSE grade
END;
```
在这条查询中:
- `UPDATE students` 表示我们将对 `students` 表执行更新操作。
- `SET grade =` 指定了我们需要更新的列及其新值。
- `CASE` 后面的部分是我们使用的 `CASE WHEN` 语法块。
- `WHEN grade < 60 THEN 60` 是条件分支,如果满足这个条件(即学生分数小于60),则将其分数设置为60。
- `ELSE grade` 部分表示当上述条件不满足时(即学生分数等于或大于60),保持原分数不变。
- 最后的 `END` 结束了 CASE 语法块。
`CASE WHEN` 除了上面的基本结构之外,还可以包含更多复杂的条件分支和默认值,使得你可以更灵活地控制数据的更新过程。例如:
```sql
UPDATE students
SET grade = CASE
WHEN grade < 50 THEN 50 -- 如果分数小于50,则设置为50
WHEN grade BETWEEN 50 AND 69 THEN (grade + 10) / 2 -- 如果分数在50到69之间,则取平均值并向上取整作为新的分数
ELSE grade -- 其他情况保持原有分数不变
END;
```
通过使用 `CASE WHEN`,你可以有效地根据不同的条件动态调整数据库中的数据,这对于自动化数据清洗、错误修正或是基于特定规则的批量更新特别有用。
---