MySQL数据库语句优化之善用case语句

一、case语句

CASE 表达式是SQL 里非常重要而且使用起来非常便利的技术,我们应该学会用它来描述条件分支,可以在执行过程中可以在某种程度上减少查询时间。

二、case语句分类

1、简单CASE 表达式(simple case expression)

-- 简单CASE 表达式
CASE 变量
WHEN '值1' THEN 执行语句1
WHEN '值2' THEN 执行语句2
ELSE '其他' END;

2、搜索CASE 表达式(searched case expression)

-- 搜索CASE 表达式
CASE WHEN 变量 = '值1' THEN 执行语句1
WHEN 变量 = '值2' THEN 执行语句2
ELSE '其他' END;

三、例子

1、利用case可以统计多条数据
假如有一张表(person),里面包含有人员信息包括人员所在城市(字段为city),假设人员都分布在南京、上海、北京和杭州这四个城市。我们需要统计每个城市都有多少人。
1、用select 语句实现

--南京人数
select city,sum(name) from person group by city;

2、用case语句实现

select city,
sum(case city=‘nanjing’ then name else 0 end) as city_nanjing,
sum(case city=‘shanghai’ then name else 0 end) as city_shanghai,
sum(case city=‘beijing’ then name else 0 end) as city_beijing,
sum(case city=‘hangzhou’ then name else 0 end) as city_hangzhou
from person;

性能分析:下面的方式虽然撰写的语句虽然长,当数据量到达一定程度上,下面语句的执行效率明显优于上面语句。上面语句进行分组后再进行统计,下面的语句在执行的过程中就进行统计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绝域时空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值