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

在 MySQL 中,CASE WHEN 是一种条件判断语句,可以在查询中实现类似%ignore_a_1%中的 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
在 SELECT 查询中使用示例
假设有一张学生表 students,包含字段:name(姓名)、score(分数),我们想根据分数划分等级:
腾讯Effidit
腾讯AI Lab开发的AI写作助手,提升写作者的写作效率和创作体验
65 查看详情
SELECT name, score, CASE WHEN score >= 90 THEN '优秀' WHEN score >= 80 THEN '良好' WHEN score >= 60 THEN '及格' ELSE '不及格' END AS gradeFROM students;
这个查询会为每个学生返回对应的等级。
在 ORDER BY 中动态排序
可以结合 CASE WHEN 实现自定义排序规则。例如按状态优先级排序:
SELECT status, name FROM tasksORDER BY CASE WHEN status = 'urgent' THEN 1 WHEN status = 'high' THEN 2 WHEN status = 'normal' THEN 3 ELSE 4 END;
这样就能按自定义优先级对任务状态排序。
在 UPDATE 中使用条件更新
也可以在 UPDATE 语句中使用 CASE WHEN 批量处理不同情况:
UPDATE employees SET salary = CASE WHEN performance = 'A' THEN salary * 1.1 WHEN performance = 'B' THEN salary * 1.05 ELSE salaryEND;
根据员工绩效动态调整薪资。
基本上就这些。CASE WHEN 能让 SQL 更具表现力和灵活性,尤其适合数据分类、状态映射、动态计算等场景。注意 WHEN 条件是顺序执行的,一旦匹配就不再往下判断,所以条件顺序很重要。不复杂但容易忽略细节。
以上就是mysql中CASE WHEN如何使用_mysql CASE WHEN操作的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1065687.html
微信扫一扫
支付宝扫一扫