MYSQL 判断执行哪条语句
概述
在MySQL中,我们经常会有需要根据某个条件来判断执行不同的SQL语句的情况。这个时候,我们可以使用MySQL的条件语句来实现这个功能。本文将介绍MySQL中常用的条件语句,以及如何根据条件判断执行哪条语句。
IF语句
IF语句是MySQL中最常用的条件语句之一,它可以根据一个条件来判断执行不同的语句块。IF语句的一般语法如下:
IF(condition, expression1, expression2)
其中,condition是一个布尔表达式,如果为真,则执行expression1,否则执行expression2。
示例
假设有一个学生表students,包含字段id、name和score,我们要根据学生的分数判断他是否及格。如果及格,则输出"及格",否则输出"不及格"。可以使用IF语句来实现:
SELECT id, name, IF(score >= 60, "及格", "不及格") AS result FROM students;
上述代码中,IF语句的condition是score >= 60,如果成立,则返回"及格",否则返回"不及格"。
CASE语句
除了IF语句,还可以使用CASE语句来根据条件判断执行不同的语句块。CASE语句可以有两种形式:简单CASE语句和搜索CASE语句。
简单CASE语句
简单CASE语句的语法如下:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE result
END
其中,expression是要进行判断的表达式,value1、value2等是各种可能的值,result1、result2等是对应的结果。
示例
假设有一个学生表students,包含字段id、name和score,我们要根据学生的分数判断他的等级。可以使用CASE语句来实现:
SELECT id, name,
CASE
WHEN score >= 90 THEN "优秀"
WHEN score >= 80 THEN "良好"
WHEN score >= 60 THEN "及格"
ELSE "不及格"
END AS grade
FROM students;
上述代码中,CASE语句的expression是分数score,根据不同的值返回不同的等级。
搜索CASE语句
搜索CASE语句的语法如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
其中,condition1、condition2等是要进行判断的条件,result1、result2等是对应的结果。
示例
假设有一个学生表students,包含字段id、name和score,我们要根据学生的分数判断他的等级。可以使用搜索CASE语句来实现:
SELECT id, name,
CASE
WHEN score BETWEEN 90 AND 100 THEN "优秀"
WHEN score BETWEEN 80 AND 89 THEN "良好"
WHEN score BETWEEN 60 AND 79 THEN "及格"
ELSE "不及格"
END AS grade
FROM students;
上述代码中,搜索CASE语句的条件是score的范围,根据不同的范围返回不同的等级。
IFNULL函数
除了IF语句和CASE语句,还可以使用IFNULL函数来判断执行哪条语句。IFNULL函数的语法如下:
IFNULL(expression1, expression2)
如果expression1不为NULL,则返回expression1,否则返回expression2。
示例
假设有一个学生表students,包含字段id、name和score,我们要根据学生的分数判断他的等级。如果分数为NULL,则返回"未知"。可以使用IFNULL函数来实现:
SELECT id, name,
IFNULL(
CASE
WHEN score >= 90 THEN "优秀"
WHEN score >= 80 THEN "良好"
WHEN score >= 60 THEN "及格"
ELSE "不及格"
END,
"未知"
) AS grade
FROM students;
上述代码中,先使用CASE语句根据分数判断等级,然