CASE WHEN
在查询结果中按条件返回不同的值。
简介
CASE WHEN 按从上到下的顺序判断条件,并返回第一个命中分支的结果。没有 ELSE 且所有条件都不成立时会返回 NULL。各分支结果应使用兼容的数据类型,并先写更具体的条件,避免被前面的宽泛条件提前匹配。
基础语法
SELECT name, CASE WHEN amount >= 1000 THEN 'High' ELSE 'Normal' END AS level FROM orders;
示例
CASE WHEN 示例
按 amount 是否达到 1000,把订单标记为 High 或 Normal。
示例数据表
表名:
orders| name | amount |
|---|---|
| Alice | 1200 |
| Bob | 900 |
| Cindy | 1500 |
| David | 700 |
运行结果
| name | level |
|---|---|
| Alice | High |
| Bob | Normal |
| Cindy | High |
| David | Normal |
常见问题
CASE WHEN 必须写 ELSE 吗?
不是必须,但不写 ELSE 时不满足条件的行会返回 NULL。
CASE WHEN 可以写多个 WHEN 吗?
可以,SQL 会从上到下判断,命中第一个条件后返回对应结果。
CASE WHEN 可以用于 GROUP BY 吗?
可以,常用于先分类再统计,例如按金额区间分组。
标签
这篇内容是否清楚?
感谢反馈,我们会把它用于后续内容复核。