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查询的灵活性和效率。
热门推荐
同庆号普洱茶:从贡茶到国礼的传奇之路
双十一抢购攻略:同庆号普洱茶收藏指南
项目团队中的沟通角色有哪些
荆州古城获双料大奖,千年古迹展新颜
荆州古城墙:三国迷必打卡圣地!
荆州城墙考古新发现:千年砖城的秘密揭晓!
氢能列车:绿色出行新趋势
双十一余额宝理财攻略:如何降低投资风险?
向阳生涯:如何理性应对长辈催婚?
从惠东男子催婚结婚看现代婚姻观变迁
合福高铁:北京到上饶的最美铁路线!
北京南到上饶高铁最新抢票攻略:车次分析、技巧分享及中转方案推荐
CMD命令背后的黑科技:环境变量大揭秘!
用CMD命令快速找到丢失的文件!
HOPE技术:器官移植领域的创新突破
MATLAB 使用技巧全面指南
秋冬呼吸道疾病高发,陆军总院专家详解预防要点
解放军总医院呼吸科2025年科研布局:聚焦慢性肺曲霉菌病和泛耐药菌感染
重庆为何美女多?因为历史上的8次混血
易中天征集春联:用诗词解读春节文化
手把手教你贴春联:让吉祥如意遍布家中每个角落
春节贴春联,你家门神是谁?
教学生“学会学习”—学习策略的教学
《大秦完美太子》:这对父子太甜了!
人工耳蜗:科技点亮无声世界
奇早认证:高效起床策略助你成为下一个成功者
早起七点,晚练七点:健康生活新姿势!
烧香为何一定是三根?每根分别代表什么?传统文化我们不得不知
低通滤波器的那些事儿:电容截止频率的秘密
从零开始学汽修:新手也能掌握的燃油车维修指南