mysql if else 多条件 CASE WHEN THEN

select count(id) value ,
CASE 
    WHEN rctype = '1' THEN '学术型人才' 
    WHEN rctype = '2' THEN '工程型人才' 
    WHEN rctype = '3' THEN '技术型人才' 
    WHEN rctype = '4' THEN '技能型人才' 
    ELSE '其他' 
END AS  name
from data_user GROUP BY rctype

在这里插入图片描述

### MySQL CASE WHEN THEN ELSE END 语句详解 #### 基本语法结构 在MySQL中,`CASE-WHEN-THEN-ELSE-END` 是一种强大的控制流语句,允许执行基于不同条件返回不同的值的操作。基本语法如下: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ``` 此结构可以嵌入到SQL查询的任何地方,只要期望得到单个表达式的上下文中即可[^1]。 #### 数据转换示例 为了展示该功能的应用范围,在实际应用中经常用来做数据转换工作。例如将性别字段从数字编码转成文字描述: ```sql SELECT id, name, CASE gender WHEN '0' THEN 'Female' WHEN '1' THEN 'Male' ELSE 'Unknown' END AS gender_description FROM users; ``` 这段代码会读取表 `users` 中的数据,并根据 `gender` 字段的内容决定显示 "Male", "Female" 或者 "Unknown"[^3]。 #### 排名计算实例 另一个常见的应用场景是在统计分析时实现自定义排名逻辑。比如按照销售额给员工打分并分配等级标签: ```sql SELECT employee_id, sales_amount, CASE WHEN sales_amount >= 50000 THEN 'A级' WHEN sales_amount BETWEEN 30000 AND 49999 THEN 'B级' WHEN sales_amount < 30000 THEN 'C级' ELSE '未定级' END as performance_level FROM employees_sales; ``` 这里通过比较销售金额大小来确定绩效级别,并最终形成一个新的列 `performance_level` 来表示每个员工的表现层次[^2]。 #### 结合 ORDER BY 进行排序 除了上述用途外,还可以利用 `CASE-ELSE-END` 实现更复杂的排序需求。例如按特定顺序排列某些类别项目: ```sql SELECT * FROM products ORDER BY CASE category WHEN 'Electronics' THEN 1 WHEN 'Books' THEN 2 WHEN 'Clothing' THEN 3 ELSE 4 END; ``` 这使得可以根据业务规则灵活调整记录之间的相对位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值