答案:CASE WHEN 是 MySQL 中用于实现条件逻辑的语句,支持在 SELECT、UPDATE、ORDER BY 中根据条件返回不同值;其有两种形式:简单 CASE 表达式用于等值比较,搜索型 CASE 表达式用于复杂条件判断;常用于分数评级、状态排序、薪资调整等场景;执行时按顺序匹配,一旦满足即停止,因此条件顺序至关重要。

在 MySQL 中,CASE WHEN 是一种条件判断语句,可以在查询中实现类似编程语言中的 if-else 逻辑。它常用于 SELECT、UPDATE、ORDER BY 等语句中,根据不同的条件返回不同的值。
MySQL 的 CASE WHEN 有两种使用方式:
1. 简单 CASE 表达式(类比 switch)
将一个表达式与多个可能的值进行比较。
CASE value
WHEN compare_value1 THEN result1
WHEN compare_value2 THEN result2
ELSE default_result
END
2. 搜索型 CASE 表达式(类比 if-else)
对多个条件进行判断,更灵活,支持复杂逻辑。
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END
假设有一张学生表 students,包含字段:name(姓名)、score(分数),我们想根据分数划分等级:
SELECT
name,
score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS grade
FROM students;
这个查询会为每个学生返回对应的等级。
可以结合 CASE WHEN 实现自定义排序规则。例如按状态优先级排序:
SELECT status, name FROM tasks
ORDER BY
CASE
WHEN status = 'urgent' THEN 1
WHEN status = 'high' THEN 2
WHEN status = 'normal' THEN 3
ELSE 4
END;
这样就能按自定义优先级对任务状态排序。
也可以在 UPDATE 语句中使用 CASE WHEN 批量处理不同情况:
UPDATE employees
SET salary = CASE
WHEN performance = 'A' THEN salary * 1.1
WHEN performance = 'B' THEN salary * 1.05
ELSE salary
END;
根据员工绩效动态调整薪资。
基本上就这些。CASE WHEN 能让 SQL 更具表现力和灵活性,尤其适合数据分类、状态映射、动态计算等场景。注意 WHEN 条件是顺序执行的,一旦匹配就不再往下判断,所以条件顺序很重要。不复杂但容易忽略细节。
以上就是mysql中CASE WHEN如何使用_mysql CASE WHEN操作的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号