MySQL中CASE函数的应用:将查询列作为判断条件
创作时间:
作者:
@小白创作中心
MySQL中CASE函数的应用:将查询列作为判断条件
引用
CSDN
1.
https://blog.csdn.net/z_xiao_qiang/article/details/113584576
在数据库查询中,有时需要根据列的值来判断并进行相应的统计或计算。MySQL的CASE函数提供了一种强大的解决方案,可以将查询的列作为判断条件,实现复杂的查询需求。本文通过一个具体的订单统计场景,详细讲解了CASE函数的使用方法,并给出了多个实际应用示例。
场景描述
假设我们有一个订单表order,结构如下:
CREATE TABLE `order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`mch_id` varchar(255) DEFAULT NULL COMMENT '商户id',
`device_info` varchar(255) DEFAULT NULL COMMENT '设备号',
`mch_name` varchar(255) DEFAULT NULL COMMENT '商户名称',
`status` varchar(255) DEFAULT NULL COMMENT '状态 0-成功 2-退款 3- 失败',
`amount` varchar(255) DEFAULT NULL COMMENT '交易金额',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
表中插入了一些示例数据:
INSERT INTO `xiaoqiang_test`.`order`(`id`, `mch_id`, `device_info`, `mch_name`, `status`, `amount`) VALUES (1, '1', '101', '超市', '0', '1');
INSERT INTO `xiaoqiang_test`.`order`(`id`, `mch_id`, `device_info`, `mch_name`, `status`, `amount`) VALUES (2, '2', '102', '百货', '2', '2');
INSERT INTO `xiaoqiang_test`.`order`(`id`, `mch_id`, `device_info`, `mch_name`, `status`, `amount`) VALUES (3, '3', '103', '菜市场', '3', '3');
查询需求
我们需要查询某日的总交易金额、失败金额和退款金额。
传统方法
使用传统方法,我们需要分别执行以下三条SQL语句:
- 总交易金额查询:
select sum(amount) from `order`;
- 失败金额查询:
select sum(amount) from `order` where status = '3';
- 退款金额查询:
select sum(amount) from `order` where status = '2';
这种方法需要执行多条SQL语句,效率较低。接下来,我们介绍如何使用CASE函数来优化这个查询。
使用CASE函数优化查询
MySQL的CASE函数允许我们将查询的列作为判断条件,从而实现更复杂的查询需求。CASE函数的基本语法如下:
sum(case 属性名 when 属性值1 then 1 else 0 end): 当某个属性下为属性值1就加1个数量,否则就作0统计。sum(case when 条件 then 指定列 else 0 end): 当when后面的条件成立,就将指定列进行求和,否则就作0统计。
使用CASE函数,我们可以将上述三个查询合并为一个:
select
sum(amount) AS '总交易金额',
sum(case when status = '2' then amount ELSE 0 END) AS '退款金额',
sum(case when status = '3' then amount ELSE 0 END) AS '失败金额'
from `order`;
这样,我们就可以通过一条SQL语句获取所有需要的数据。
CASE函数的其他应用场景
除了上述示例,CASE函数还有其他多种应用场景:
简单CASE函数
case `gender`
when 1 then '男'
when 2 then '女'
else '未知'
end
CASE搜索函数
case
when gender = 1 then '男'
when gender = 2 then '女'
else '未知'
end
通过这些示例,我们可以看到CASE函数在实际项目中的广泛应用。它不仅可以用于数值计算,还可以用于字符串转换等场景,极大地提高了SQL查询的灵活性和效率。
热门推荐
地球上速度最快的十大动物,猎豹居然只排第七,前五名全都是鸟类
2024世界幸福报告出炉:美国跌出前20,中国排名如何?
生产经营所得的个人所得税税率是多少
不同爬虫类型的优势与应用场景分析
INTJ与INTP的相处之道及INTP人格简介
容易诱发癫痫发作的8个因素,别不当回事!
如何将短视频配音文案与视频画面完美结合?实现完美音画同步,提升观看体验
如何估算项目资源的成本
中国针灸杂志是什么级别的期刊?是核心期刊吗?
历年公务员考试竞争态势:历年与2024年考试人数的深度分析
超声检查门静脉的原理
熟鸡蛋能放几天不坏(鸡蛋该不该放冰箱里!)
如何进行资产配置以优化投资组合
山西银行收百万罚单 提质增效仍面临较大挑战
进度再次刷新!环北广西工程创全国同类重大水利项目最快速度
铁路部门推出多项适老服务,让老年人出行更加便捷
欧冠焦点:布鲁日与维拉的激情碰撞
国际快递包裹的外箱尺寸及重量标准
专业不对口能否报考公务员?看这里的专业要求解读
广州地铁八号线北延段建设提速,白云区在建6条地铁线路最新进展
东契奇洛杉矶首秀热度暴涨:湖人主场票价持续飘红 场边门票卖出天价
什么是等保,等保主要保护哪些,企业为何需要做等级保护
酒类产品消费税的计算方法是什么
白芸豆黑咖啡的功效与作用
羽毛球杀球技巧全攻略:从基础到进阶的完整训练指南
新加坡推绿色交通,出租车行业迎电动化
2025年人事考试全攻略,一文解锁
国家信息中心:新能源汽车发展趋势报告
美国研究生留学申请时要看重哪几个步骤
正规医院洗牙一般多少钱?北京80+上海70+广州80+深圳60+