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