MySQLCASE表达式详解✨
`CASE`是MySQL中非常实用的条件表达式,它允许我们在SQL查询中进行条件判断和分支处理,类似于编程语言中的`if-else`或`switch-case`语句。下面让我们深入了解它的用法吧!🚀
基本语法结构
MySQL支持两种形式的`CASE`表达式:
1.简单CASE表达式
```sql
CASE列名或表达式
WHEN值1THEN结果1
WHEN值2THEN结果2
...
ELSE默认结果
END
```
2.搜索CASE表达式
```sql
CASE
WHEN条件1THEN结果1
WHEN条件2THEN结果2
...
ELSE默认结果
END
```
实际应用示例🌟
示例1:简单评级系统
```sql
SELECT
student_name,
score,
CASE
WHENscore>=90THEN'A'
WHENscore>=80THEN'B'
WHENscore>=70THEN'C'
WHENscore>=60THEN'D'
ELSE'F'
ENDASgrade
FROMstudents;
```
示例2:订单状态转换
```sql
SELECT
order_id,
status_code,
CASEstatus_code
WHEN1THEN'待付款'
WHEN2THEN'已付款'
WHEN3THEN'已发货'
WHEN4THEN'已完成'
WHEN5THEN'已取消'
ELSE'未知状态'
ENDASstatus_text
FROMorders;
```
示例3:在UPDATE语句中使用
```sql
UPDATEproducts
SETprice=CASE
WHENcategory='电子产品'THENprice0.9--电子产品打9折
WHENcategory='食品'THENprice1.05--食品涨价5%
ELSEprice--其他保持不变
END;
```
高级用法💡
在聚合函数中使用CASE
```sql
SELECT
department,
COUNT()AStotal_employees,
SUM(CASEWHENgender='M'THEN1ELSE0END)ASmale_count,
SUM(CASEWHENgender='F'THEN1ELSE0END)ASfemale_count
FROMemployees
GROUPBYdepartment;
```
在ORDERBY子句中使用
```sql
SELECTFROMtasks
ORDERBY
CASEpriority
WHEN'高'THEN1
WHEN'中'THEN2
WHEN'低'THEN3
ELSE4
END;
```
注意事项⚠️
1.`CASE`表达式会按顺序评估条件,第一个满足的条件会被执行,后续条件将被忽略
2.如果没有条件满足且没有`ELSE`子句,结果将为`NULL`
3.所有`THEN`子句的结果数据类型应该兼容
`CASE`表达式是SQL查询中非常强大的工具,合理使用可以让你的查询更加灵活和高效!🎯下次写SQL时不妨试试看吧!
`CASE`是MySQL中非常实用的条件表达式,它允许我们在SQL查询中进行条件判断和分支处理,类似于编程语言中的`if-else`或`switch-case`语句。下面让我们深入了解它的用法吧!🚀
基本语法结构
MySQL支持两种形式的`CASE`表达式:
1.简单CASE表达式
```sql
CASE列名或表达式
WHEN值1THEN结果1
WHEN值2THEN结果2
...
ELSE默认结果
END
```
2.搜索CASE表达式
```sql
CASE
WHEN条件1THEN结果1
WHEN条件2THEN结果2
...
ELSE默认结果
END
```
实际应用示例🌟
示例1:简单评级系统
```sql
SELECT
student_name,
score,
CASE
WHENscore>=90THEN'A'
WHENscore>=80THEN'B'
WHENscore>=70THEN'C'
WHENscore>=60THEN'D'
ELSE'F'
ENDASgrade
FROMstudents;
```
示例2:订单状态转换
```sql
SELECT
order_id,
status_code,
CASEstatus_code
WHEN1THEN'待付款'
WHEN2THEN'已付款'
WHEN3THEN'已发货'
WHEN4THEN'已完成'
WHEN5THEN'已取消'
ELSE'未知状态'
ENDASstatus_text
FROMorders;
```
示例3:在UPDATE语句中使用
```sql
UPDATEproducts
SETprice=CASE
WHENcategory='电子产品'THENprice0.9--电子产品打9折
WHENcategory='食品'THENprice1.05--食品涨价5%
ELSEprice--其他保持不变
END;
```
高级用法💡
在聚合函数中使用CASE
```sql
SELECT
department,
COUNT()AStotal_employees,
SUM(CASEWHENgender='M'THEN1ELSE0END)ASmale_count,
SUM(CASEWHENgender='F'THEN1ELSE0END)ASfemale_count
FROMemployees
GROUPBYdepartment;
```
在ORDERBY子句中使用
```sql
SELECTFROMtasks
ORDERBY
CASEpriority
WHEN'高'THEN1
WHEN'中'THEN2
WHEN'低'THEN3
ELSE4
END;
```
注意事项⚠️
1.`CASE`表达式会按顺序评估条件,第一个满足的条件会被执行,后续条件将被忽略
2.如果没有条件满足且没有`ELSE`子句,结果将为`NULL`
3.所有`THEN`子句的结果数据类型应该兼容
`CASE`表达式是SQL查询中非常强大的工具,合理使用可以让你的查询更加灵活和高效!🎯下次写SQL时不妨试试看吧!
1200

被折叠的 条评论
为什么被折叠?



