You need to enable JavaScript to run this app. SQL中多CASE WHEN场景如何工作?存在两个满足条件的分支时选取哪个?
优惠活动
大模型
产品
解决方案
定价
更多

SQL中多CASE WHEN场景如何工作?存在两个满足条件的分支时选取哪个?

SQL 多CASE WHEN分支同时命中的输出规则

CASE WHEN 表达式的分支校验是严格按书写顺序从上至下依次执行的,不存在分支优先级的隐式权重判断:

  • 逐行检查每个WHEN后的条件表达式,一旦遇到第一个判断结果为真的分支,立刻返回该分支THEN后面定义的结果值,终止后续所有分支的校验流程
  • 当所有WHEN分支的条件判断结果都为假时,才会进入ELSE分支返回对应结果;如果代码中没有定义ELSE分支,所有条件匹配失败时表达式最终返回NULL

结合给出的示例具体说明:

SELECT 
    CASE 
        WHEN field1 = 'a' THEN 1
        WHEN field2 = 'a' THEN 2
        ELSE 3
    END
from table ;

如果某条表中记录同时满足field1 = 'a'和field2 = 'a'两个条件,因为第一个WHEN分支书写位置更靠前,查询最终会返回结果1,不会触发第二个返回2的分支。

  • 该匹配规则是SQL标准定义的通用逻辑,所有主流SQL引擎(MySQL、PostgreSQL、SQL Server、Oracle、Hive等)的实现都完全遵循这个规则,不存在跨引擎的行为差异

内容的提问来源于stack exchange,提问作者Theodore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 18:45:02