mysql case
时间: 2023-10-20 16:34:54 浏览: 93
MySQL中的CASE函数用于在查询中根据条件返回不同的值。有两种形式的CASE函数:搜索CASE和简单CASE。
搜索CASE函数的语法如下:
```
CASE
WHEN 布尔表达式1 THEN 结果表达式1
WHEN 布尔表达式2 THEN 结果表达式2
...
WHEN 布尔表达式n THEN 结果表达式n
[ELSE 结果表达式n+1]
END
```
其中布尔表达式是要进行判断的条件,结果表达式是满足条件时要返回的值。ELSE子句是可选的,用于在所有条件都不满足时返回一个默认值。
简单CASE函数的语法如下:
```
CASE 测试表达式
WHEN 简单表达式1 THEN 结果表达式1
WHEN 简单表达式2 THEN 结果表达式2
...
WHEN 简单表达式n THEN 结果表达式n
[ELSE 结果表达式n+1]
END
```
简单表达式是要与测试表达式进行比较的值。
举个例子,假设有一个名为user_profile的表,包含device_id、gender和age字段。我们可以使用CASE函数根据age字段的值将用户分为不同的年龄段。例如,下面的查询会计算不同年龄段的用户数量:
```
SELECT
CASE
WHEN age < 25 OR age IS NULL THEN '25岁以下'
WHEN age >= 25 THEN '25岁及以上'
END AS age_cut,
COUNT(*) AS number
FROM
user_profile
GROUP BY
age_cut
```
这个查询会将年龄小于25岁或为空的用户归为'25岁以下',将年龄大于等于25岁的用户归为'25岁及以上',然后计算每个年龄段的用户数量。
另外,还可以使用简单CASE函数来实现相同的功能:
```
SELECT
device_id,
gender,
CASE
WHEN age >= 25 THEN '25岁及以上'
WHEN age >= 20 THEN '20-24岁'
WHEN age < 20 THEN '20岁以下'
ELSE '其他'
END AS age_cut
FROM
user_profile
```
这个查询会根据age字段的值将用户划分为不同的年龄段,并在结果中添加一个名为age_cut的列,显示用户所属的年龄段。
综上所述,MySQL的CASE函数可以根据条件返回不同的值,可以使用搜索CASE或简单CASE函数来实现这一功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文