一、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
- 2
- 3
- 4
三、例子
1、利用case可以统计多条数据
假如有一张表(person),里面包含有人员信息包括人员所在城市(字段为city),假设人员都分布在南京、上海、北京和杭州这四个城市。我们需要统计每个城市都有多少人。
1、用select 语句实现
--南京人数
select city,sum(name) from person group by city;
- 1
- 2
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;
- 6
性能分析:下面的方式虽然撰写的语句虽然长,当数据量到达一定程度上,下面语句的执行效率明显优于上面语句。上面语句进行分组后再进行统计,下面的语句在执行的过程中就进行统计。