📅  最后修改于: 2023-12-03 15:33:01.597000             🧑  作者: Mango
IF()
函数是MySQL中的一种条件表达式函数,用于在满足条件时返回一个值,否则返回另一个值。它的语法如下:
IF(expr1, expr2, expr3)
其中,expr1
是条件表达式,如果它的值为真,则返回expr2
的值,否则返回expr3
的值。
假设有一个students
表,它的结构如下:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
score INT
);
现在我们想根据成绩是否及格(>=60)来查询学生的信息,可以使用以下SQL语句:
SELECT id, name, IF(score>=60, '及格', '不及格') AS result FROM students;
以上SQL语句中,IF()
函数的第一个参数是条件表达式,即score>=60
,如果成立则返回'及格'
字样,否则返回'不及格'
字样。结果如下:
+----+------+--------+
| id | name | result |
+----+------+--------+
| 1 | 张三 | 及格 |
| 2 | 李四 | 不及格 |
| 3 | 王五 | 及格 |
+----+------+--------+
IF()
函数还可以嵌套使用,实现多重判断。例如,我们想根据成绩划分为优秀、良好、及格、不及格四个等级,可以使用以下SQL语句:
SELECT id, name,
IF(score>=90, '优秀',
IF(score>=80, '良好',
IF(score>=60, '及格', '不及格'))) AS result
FROM students;
以上SQL语句中,嵌套使用了三个IF()
函数,分别对应四个等级。结果如下:
+----+------+--------+
| id | name | result |
+----+------+--------+
| 1 | 张三 | 及格 |
| 2 | 李四 | 不及格 |
| 3 | 王五 | 良好 |
+----+------+--------+
假设有一个orders
表,它的结构如下:
CREATE TABLE orders (
id INT PRIMARY KEY,
customer VARCHAR(50),
quantity INT,
price DECIMAL(8,2)
);
现在我们想统计每个客户的订单数量和总额,并按总额降序排序,可以使用以下SQL语句:
SELECT customer,
COUNT(*) AS total_orders,
SUM(IF(price IS NULL, 0, quantity*price)) AS total_amount
FROM orders
GROUP BY customer
ORDER BY total_amount DESC;
以上SQL语句中,使用了嵌套的IF()
函数,当price
为空时,则返回0,否则计算赋值。结果如下:
+----------+--------------+--------------+
| customer | total_orders | total_amount |
+----------+--------------+--------------+
| Alice | 2 | 280.00 |
| Bob | 2 | 175.00 |
| Charlie | 1 | 50.00 |
+----------+--------------+--------------+
IF()
函数是MySQL中的条件表达式函数,可以根据条件返回不同的值,还可以嵌套使用实现多重判断。它在实际应用中非常常见,尤其在数据统计方面更是必不可少的工具。