📜  MySQL IF()(1)

📅  最后修改于: 2023-12-03 15:33:01.597000             🧑  作者: Mango

MySQL IF()函数

简介

IF()函数是MySQL中的一种条件表达式函数,用于在满足条件时返回一个值,否则返回另一个值。它的语法如下:

IF(expr1, expr2, expr3)

其中,expr1是条件表达式,如果它的值为真,则返回expr2的值,否则返回expr3的值。

使用示例
示例1:IF()函数的基本用法

假设有一个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 | 王五 | 及格   |
+----+------+--------+
示例2:IF()函数的嵌套使用

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 | 王五 | 良好   |
+----+------+--------+
示例3:IF()函数的应用——记录统计

假设有一个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中的条件表达式函数,可以根据条件返回不同的值,还可以嵌套使用实现多重判断。它在实际应用中非常常见,尤其在数据统计方面更是必不可少的工具。