You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何SQL CASE语句未执行第二个WHEN分支,返回结果为1?

为什么CASE语句只返回1而不执行第二个WHEN分支?

先看你写的SQL语句:

SELECT  
    CASE 
        WHEN 1 = 1 THEN 1
        WHEN 1 = 1 THEN 2
        ELSE 0 
    END

输出结果是1,原因很简单——SQL的CASE语句是顺序匹配、短路执行的:

  • 它会逐个检查WHEN后面的条件,只要碰到第一个结果为真的条件,就立刻执行对应的THEN返回值,然后直接结束整个CASE判断
  • 你的第一个WHEN条件1=1显然是成立的,所以直接返回1,后面的第二个WHEN和ELSE分支根本不会被执行

要是想让第二个WHEN生效,只要把第一个WHEN的条件改成不成立的就行,比如:

SELECT  
    CASE 
        WHEN 1 = 2 THEN 1 -- 这个条件不成立
        WHEN 1 = 1 THEN 2 -- 走到这里,返回2
        ELSE 0 
    END

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:55:23