sql语法 - 根据条件, 生成额外一个新字段 CASE WHEN ELSE END AS

sql 复制代码
CASE WHEN ss.appNum > 0 THEN '1' ELSE '0' END AS backApplyResult
  • 如果 ss.appNum(假设是某个子查询或表别名 ss 中的字段)大于 0,则返回字符串 '1'
  • 否则返回字符串 '0'
  • 结果列命名为 backApplyResult

这通常用于前端展示或业务逻辑判断,例如

  • '1' 表示"已申请"
  • '0' 表示"未申请"

假设有订单表和申请记录表,你想知道每个订单是否被用户申请过退款:

sql 复制代码
SELECT 
    o.order_id,
    CASE WHEN ss.appNum > 0 THEN '1' ELSE '0' END AS backApplyResult
FROM orders o
LEFT JOIN (
    SELECT order_id, COUNT(*) AS appNum
    FROM refund_applications
    GROUP BY order_id
) ss ON o.order_id = ss.order_id;

结果可能为

order_id backApplyResult
1001 '1'
1002 '0'

解析:

  1. 顺序 先子查询()里面的.group by 和 聚合函数配合 形成 left join 右侧表 取名ss
  2. 执行左链接 left join ... on ... 生成一个新表
  3. CASE WHEN ss.appNum > 0 THEN '1' ELSE '0' END AS backApplyResult