CASE函数分支条件

数据库处理中,条件逻辑是不可或缺的部分,特别是在需要根据某些条件动态改变输出结果时。MySQL 的 CASE 语句提供了一种强大的方式来实现这种逻辑,让你可以在 SQL 查询中包含条件分支。

什么是 CASE 语句?

CASE 语句相当于编程中的 if-elseswitch 语句。它根据条件表达式的值选择不同的执行路径。MySQL 中的 CASE 语句有两种形式:

  • 简单CASE函数
  • 搜索CASE函数
简单 CASE 语句
CASE value_expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE resultN
END
  • value_expression 是要比较的表达式。
  • WHEN valueN THEN resultN 是基于 value_expression 的比较结果来选择的分支。
  • ELSE resultN 是所有 WHEN 条件都不满足时的默认结果。
搜索 CASE 语句
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE resultN
END
  • WHEN conditionN THEN resultN 直接基于条件表达式 conditionN 的真值来选择执行的分支。
  • ELSE resultN 是所有条件都不满足时的默认结果。

CASE 语句的用途

CASE 语句的用途非常广泛,比如:

  • 数据分类:根据某些条件对数据进行分类,返回不同的标签或值。
  • 动态排序:根据不同的条件对结果集进行排序。
  • 条件计算:进行复杂的计算,计算规则根据行中的数据动态变化。

假设这是一个手机销量表,表中会有各种品牌的销量情况;

业务需求:

假设有一个后台数据平台,查看手机品牌的销量情况,并以环形图的形式展示。那么就需要将品牌划分为:苹果、华为、VIVO、OPPO、小米、其它。

思路:

如果不使用CASE语句,那么就需要先将其它的那些品牌筛选出来然后进行求和,然后再查询出原表中需要展示的这几个品牌,最后将这两个查询结合返回。此种方式SQL语句就不做示例了。

如果使用CASE语句,那么语句就如下:

select sum(xl),
	case 
		when brand not in('苹果','华为','vivo','oppo','小米') then '其他'
	else brand
end as brandName
from newtable
group by brandName

运行结果:

最后先暂时不进行group by 分组 来更加直白的体现case语句的作用,也就是暂时将上述的SQL语句group by字段删掉

select xl,
	case 
		when brand not in('苹果','华为','vivo','oppo','小米') then '其他'
	else brand
end as brandName
from newtable

运行结果:

到此,case语句的效果相比大家应该能够明白了,这种需求在实际中可能会有许多类似的情况,如果会使用case语句,那么就可以使我们的SQL语句变得非常简便与简洁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值