# MySQL使用IF语句及用case语句对条件并结果进行判断
本文主要介绍MySQL中的IF语句和CASE语句的使用方法,通过对条件判断来实现结果计算。以下是本文的目录:
- IF语句
- 基本语法
- 示例
- 嵌套IF语句
- CASE语句
- 基本语法
- 示例
- CASE语句与WHERE子句的结合使用
## 1. IF语句
### 1.1 基本语法
IF语句的基本语法如下:
```sql
IF(condition, value_if_true, value_if_false)
```
其中,condition为条件表达式,value_if_true为满足条件时返回的值,value_if_false为不满足条件时返回的值。
### 1.2 示例
以下是一个简单的示例,判断一个数是否大于5,如果大于5返回'Yes',否则返回'No':
```sql
SELECT IF(7 > 5, 'Yes', 'No'); -- 返回 'Yes'
```
### 1.3 嵌套IF语句
IF语句可以进行嵌套,下面是一个嵌套IF语句的示例,判断一个数是否大于5,并且是否为偶数,如果是返回'Yes',否则返回'No':
```sql
SELECT IF(10 % 2 = 0, IF(10 > 5, 'Yes', 'No'), 'No'); -- 返回'Yes'
```
## 2. CASE语句
### 2.1 基本语法
CASE语句是MySQL中实现多分支选择的一种语句,其基本语法如下:
```sql
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE default_value
END
```
其中,expression为表达式,value1、value2为需要判断的值,result1、result2为满足条件时返回的值,default_value为默认值。
### 2.2 示例
以下是一个简单的示例,根据分数来判断等级(A、B、C、D):
```sql
SELECT CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'D'
END AS grade
FROM student;
```
### 2.3 CASE语句与WHERE子句的结合使用
CASE语句可以和WHERE子句结合使用,实现更加复杂的查询,下面是一个示例,查询学生的姓名、科目和总分,并根据学生的总分对结果进行排序:
```sql
SELECT name, subject,
CASE
WHEN subject = 'Math' THEN math_score
WHEN subject = 'English' THEN english_score
WHEN subject = 'Science' THEN science_score
END as total_score
FROM student
WHERE total_score IS NOT NULL
ORDER BY total_score DESC;
```
在上面的例子中,我们使用了CASE语句来计算学生的总分,并通过WHERE子句来过滤掉总分为空的记录,最后通过ORDER BY子句对结果进行排序。
### 总结
本文主要介绍了MySQL中IF语句和CASE语句的使用方法,并且通过示例来说明了如何使用这两种语句来进行条件判断和结果计算。在实际应用中,我们可以根据需要选择IF语句或CASE语句来实现复杂的查询操作。