sql 语句 CASE表达式用法

1、case表达式:

简单CASE 表达式:

CASE sex
WHEN ‘1’ THEN ‘男’
WHEN ‘2’ THEN ‘女’
ELSE ‘其他’ END


搜索CASE 表达式:

CASE sex
WHEN ‘1’ THEN ‘男’
WHEN ‘2’ THEN ‘女’
ELSE ‘其他’ END


注解:
简单 CASE 表达式能写的条件,搜索 CASE 表达式也能写
1、排他性
2、统一返回数据类型
3、要写END
4、养成写ELSE的习惯,默认为NULL

case简单用法:

eg1:将已有编号方式转换为新的方式并统计
在这里插入图片描述

SELECT *,case when pref_name in (‘苏州’,‘南京’) then ‘江苏’ when pref_name = ‘合肥’ then ‘安徽’ else ‘中国’ end as district,sum(population) as sum
from test.PopTbl group by district having sum >200 order by sum

注解: mysql数据库 是先执行select子句,再执行group by的,所以拿新列group by,having也是
,sql/oracle反之
将行数据转化成列数据

eg2:用一条 SQL 语句进行不同条件的统计(聚合函数使用case)在这里插入图片描述

select sum(case when sex =1 then case when population>0 then population else 0 end else 0 end) as ‘男’,sum(case when sex =2 then population else 0 end) as ‘女’,pref_name from test.PopTbl group by pref_name order by pref_name

注解:union也可
可嵌套 case when then else end 多条件约束(蕴含式)

蕴含式和逻辑与(logical product)的区别。逻辑与也是一个逻辑表达式,意思是“P 且 Q”,记作 P ∧ Q。蕴含式 P→Q


eg3:在 UPDATE 语句里进行条件分支
在这里插入图片描述

update test.salaries set salary = case when salary >=300000 then salary * 0.9 when salary
<250000 then salary * 1.2 else salary end where id>0
同 select 多个条件分支查询 应用范围:调换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值