当前位置: 首页 > news >正文

MySQL中CASE语法规则的详细解析及扩展示例

基础CASE表达式结构

CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE default_result
END AS alias_name

嵌套COUNT+CASE的特殊用法

COUNT(CASE WHEN condition THEN 1 END)

这种结构相当于其他数据库中的COUNTIF()或SUMIF()函数。

嵌套COUNT+CASE的特殊用法

注:

博客:
霸道流氓气质-CSDN博客

业务使用示例

        SELECTCASEWHEN COUNT(CASE WHEN ar.monitor_indicator = 0 AND ae.event_status = 0 THEN 1 END) = 0 THEN 2 WHEN COUNT(CASE WHEN ar.monitor_indicator = 0 AND ae.event_status = 0 AND mi.is_dispose = 0 THEN 1 END) > 0 THEN 1ELSE 0 END as dataSignalStatus,

逐层解析

外层CASE逻辑

CASE WHEN [条件A] THEN 2 WHEN [条件B] THEN 1 ELSE 0 END

这是一个典型的三态判断结构,优先级从上到下依次判断。

内层COUNT+CASE组合

条件A(判断是否未开启):

COUNT(CASE WHEN ar.monitor_indicator  = 0 AND ae.event_status  = 0 THEN 1 END) = 0

→计算满足"监测指标=0且事件状态=0"的记录数是否为0

条件B(判断是否异常):

COUNT(CASE WHEN ar.monitor_indicator  = 0 AND ae.event_status  = 0 AND mi.is_dispose  = 0 THEN 1 END) > 0

→计算满足"监测指标=0且事件状态=0且未处理"的记录数是否>0

同类语法示例1:学生成绩等级划分

SELECTstudent_name,CASEWHEN COUNT(CASE WHEN score >= 90 THEN 1 END) > 0 THEN 'A'WHEN COUNT(CASE WHEN score >= 60 THEN 1 END) = 0 THEN 'C'ELSE 'B'END AS grade_level
FROM exam_results
GROUP BY student_name;

同类语法示例2:电商订单状态统计

SELECTproduct_id,CASEWHEN COUNT(CASE WHEN status = 'paid' THEN 1 END) = 0 THEN 'no_sales'WHEN COUNT(CASE WHEN status = 'refunded' THEN 1 END) > 3 THEN 'high_refund'ELSE 'normal'END AS sales_status
FROM orders
GROUP BY product_id;

同类语法示例3:设备故障监测

SELECTdevice_id,CASEWHEN COUNT(CASE WHEN sensor_type = 'temp' AND is_active = 1 THEN 1 END) = 0 THEN 2WHEN COUNT(CASE WHEN sensor_type = 'temp' AND is_active = 1 AND is_error = 1 THEN 1 END) > 0 THEN 1ELSE 0END AS temp_status
FROM device_monitoring
GROUP BY device_id;

这种嵌套条件计数的方法在状态监测、分级统计等场景非常实用,能有效减少查询次数,提升性能。


 


文章转载自:

http://rTxIN0Sr.wpcfm.cn
http://5tE0bouJ.wpcfm.cn
http://dyo0XsCA.wpcfm.cn
http://S4r0zEAD.wpcfm.cn
http://fYjIFPxM.wpcfm.cn
http://xZ4mmMFZ.wpcfm.cn
http://Rt2Gy6VC.wpcfm.cn
http://9QhjLhiT.wpcfm.cn
http://Djt9ei50.wpcfm.cn
http://QEuaJbYt.wpcfm.cn
http://9KrUQVsa.wpcfm.cn
http://ohN3SEzm.wpcfm.cn
http://xbJ1mLg5.wpcfm.cn
http://Ry9DmKv4.wpcfm.cn
http://cSfkRYWd.wpcfm.cn
http://RDn5RLkn.wpcfm.cn
http://nDAnkGd3.wpcfm.cn
http://YE9dIuvQ.wpcfm.cn
http://36V5XDfL.wpcfm.cn
http://SjI7P5b3.wpcfm.cn
http://EQbraAkU.wpcfm.cn
http://2BuSqeh8.wpcfm.cn
http://tzq2yRcR.wpcfm.cn
http://lfzJps6k.wpcfm.cn
http://zsobTPlk.wpcfm.cn
http://0WCm7zeA.wpcfm.cn
http://kmlTaL7W.wpcfm.cn
http://hwIA4ky9.wpcfm.cn
http://jRTdfmAp.wpcfm.cn
http://lgySV3H9.wpcfm.cn
http://www.dtcms.com/a/367712.html

相关文章:

  • 基于单片机楼宇火灾检测系统/仓库火灾检测报警系统
  • 基础crud项目(前端部分+总结)
  • 从零开始学大模型之预训练语言模型
  • 大语言模型基础-Transformer之上下文
  • 数字签名、数字证书、数字信封的概念与区别
  • 【C语言】深入理解指针(5)
  • 240. 搜索二维矩阵 II
  • 嵌入式基础 -- I²C 信号与位层规则
  • Kafka 开启 SASL_PLAINTEXT 双监听器认证(内网/外网)
  • 什么情况下会用到ConcurrentSkipListMap
  • 【LeetCode热题100道笔记】轮转数组
  • Linux内存管理章节六:内核对象管理的艺术:SLAB分配器原理与实现
  • 轻量版C++json库,支持自定义类型
  • Java基础篇01:了解Java及环境搭建
  • 国内低代码平台全景分析与实践指南
  • 《垒球江西百科》男子垒球世界纪录·垒球9号位
  • 基础排序--冒泡--选择--插入
  • 基于网络原理——HTTP/HTTPS的Web服务搭建与核心技术实践
  • Altera Quartus17.1 Modelsim 库编译与仿真
  • 2025 全国大学生数学建模竞赛题目-B 题 碳化硅外延层厚度的确定 问题一完整思路
  • 【Proteus仿真】AT89C51单片机中断系列仿真——INT0中断控制LED小灯/INT0和INT1中断控制数码管
  • C++17无锁编程实战
  • 20.35 ChatGLM3-6B QLoRA实战:4bit量化+低秩适配,显存直降70%!
  • Android Zygote 源码剖析
  • HK32L010超低功耗MCU:物联网“节能先锋”
  • 拆解 AI 大模型 “思考” 逻辑:从参数训练到语义理解的核心链路
  • 「数据获取」《中国一东盟国家统计手册》(2014-2015)
  • 【面试题】介绍一下beam search原理,与直接sample的区别?
  • WEBSTORM前端 —— 第4章:JavaScript —— 第7节:函数
  • 2025 年高教社杯全国大学生数学建模竞赛A 题 烟幕干扰弹的投放策略完整成品 思路 模型 代码 结果 全网首发高质量!!!