mysql case when then else
MySQL 中的 CASE WHEN THEN ELSE 语句允许在查询中根据不同的条件返回不同的值。语法结构如下:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE result END
例如,可以使用 CASE WHEN THEN ELSE 语句将某个字段的值转换为另一个值,如下所示:
SELECT id, name, CASE WHEN age < 18 THEN 'Minor' WHEN age >= 18 THEN 'Adult' ELSE 'Unknown' END AS age_group FROM users;
上面的查询会返回 id、name 和 age_group 字段,其中 age_group 字段根据 age 字段的值返回 'Minor'(年龄小于 18 岁)、'Adult'(年龄大于等于 18 岁)或 'Unknown'(未知)。
mysql case when then else end用法
MySQL CASE WHEN THEN ELSE END 语句详解
基本语法结构
在MySQL中,CASE-WHEN-THEN-ELSE-END
是一种强大的控制流语句,允许执行基于不同条件返回不同的值的操作。基本语法如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
此结构可以嵌入到SQL查询的任何地方,只要期望得到单个表达式的上下文中即可[^1]。
数据转换示例
为了展示该功能的应用范围,在实际应用中经常用来做数据转换工作。例如将性别字段从数字编码转成文字描述:
SELECT
id,
name,
CASE gender
WHEN '0' THEN 'Female'
WHEN '1' THEN 'Male'
ELSE 'Unknown'
END AS gender_description
FROM users;
这段代码会读取表 users
中的数据,并根据 gender
字段的内容决定显示 "Male", "Female" 或者 "Unknown"[^3]。
排名计算实例
另一个常见的应用场景是在统计分析时实现自定义排名逻辑。比如按照销售额给员工打分并分配等级标签:
SELECT
employee_id,
sales_amount,
CASE
WHEN sales_amount >= 50000 THEN 'A级'
WHEN sales_amount BETWEEN 30000 AND 49999 THEN 'B级'
WHEN sales_amount < 30000 THEN 'C级'
ELSE '未定级'
END as performance_level
FROM employees_sales;
这里通过比较销售金额大小来确定绩效级别,并最终形成一个新的列 performance_level
来表示每个员工的表现层次[^2]。
结合 ORDER BY 进行排序
除了上述用途外,还可以利用 CASE-ELSE-END
实现更复杂的排序需求。例如按特定顺序排列某些类别项目:
SELECT *
FROM products
ORDER BY
CASE category
WHEN 'Electronics' THEN 1
WHEN 'Books' THEN 2
WHEN 'Clothing' THEN 3
ELSE 4
END;
这使得可以根据业务规则灵活调整记录之间的相对位置。
mysql case when then else end
mysql case when then else end 是一种在MySQL中使用的条件表达式,可根据特定条件进行分支处理。它可以在查询中使用,通过设定多个条件和对应的分支,根据条件判断输出不同的结果。
相关推荐
















