MySQL之条件函数-IF函数和CASE函数

条件函数在MySQL中主要有两种使用方法:IF函数和CASE函数。

  1. IF函数:
    IF函数的语法为:IF(condition, true_value, false_value)
    在IF函数中,首先会判断condition的值,如果条件成立(即非零或非空),则返回true_value;如果条件不成立(即为零或为空),则返回false_value。

示例:

SELECT IF(5 > 3, ‘条件成立’, ‘条件不成立’);
— 结果为:’条件成立’

SELECT IF(1 + 1 = 3, ‘条件成立’, ‘条件不成立’);
— 结果为:’条件不成立’

  1. CASE函数:
    CASE函数用于根据条件匹配来返回不同的值。它有两种形式:简单CASE函数和搜索CASE函数。

简单CASE函数的语法为:CASE expression WHEN value THEN result [WHEN value THEN result …] [ELSE result] END

在简单CASE函数中,首先会对expression进行判断,如果与其中的某个value相等,则返回对应的result;如果没有匹配到任何值,则返回ELSE中的result。

示例:

SELECT
CASE 1 + 1
WHEN 2 THEN ‘结果为2’
WHEN 3 THEN ‘结果为3’
ELSE ‘结果不在1和2之间’
END;
— 结果为:’结果为2′

搜索CASE函数的语法为:CASE WHEN condition THEN result [WHEN condition THEN result …] [ELSE result] END

在搜索CASE函数中,不对expression进行判断,而是对一系列的condition进行判断,如果某个condition成立,则返回对应的result;如果没有匹配到任何值,则返回ELSE中的result。

示例:

SELECT
CASE
WHEN 1 + 1 = 2 THEN ‘结果为2’
WHEN 1 + 1 = 3 THEN ‘结果为3’
ELSE ‘结果不在1和2之间’
END;
— 结果为:’结果为2′

这样,条件函数就可以根据条件来返回不同的值,实现灵活的数据处理和逻辑判断。

条件函数在查询数据的时候要怎么使用呢?

  1. 利用IF函数进行条件选择查询:

假设有一个表students,包含学生的id、姓名和成绩字段。我们想查询每个学生的成绩是否及格(大于等于60分),可以使用IF函数进行条件选择查询。

SELECT id, name, IF(score >= 60, ‘及格’, ‘不及格’) AS pass_status FROM students;

这样,查询结果中会新增一列pass_status,显示每个学生的及格状态。

  1. 使用CASE函数进行条件分组查询:

假设有一个表orders,包含订单的id、订单号和金额字段。我们想根据订单的金额分组,将大于1000元的订单归为高金额,小于等于1000元的订单归为低金额,可以使用CASE函数进行条件分组查询。

SELECT CASE WHEN amount > 1000 THEN ‘高金额’ ELSE ‘低金额’ END AS amount_group,
COUNT(*) AS count
FROM orders
GROUP BY CASE WHEN amount > 1000 THEN ‘高金额’ ELSE ‘低金额’ END;

这样,查询结果中会显示高金额和低金额两个分组的订单数量。

  1. 利用IF函数进行条件聚合查询:

假设有一个表employees,包含员工的id、姓名和性别字段。我们想统计男性和女性员工的人数,可以使用IF函数进行条件聚合查询。

SELECT COUNT(IF(gender = ‘男’, 1, NULL)) AS male_count,
COUNT(IF(gender = ‘女’, 1, NULL)) AS female_count
FROM employees;

这样,查询结果中会显示男性员工和女性员工的人数。

通过在查询语句中使用条件函数,可以根据不同的条件进行数据筛选、分组和统计,实现更加灵活和个性化的查询需求。

%title插图%num

相关文章 推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注