MySQL 中的 COUNT IF 方法

Preet Sanghavi 2023年1月3日
MySQL 中的 COUNT IF 方法

在本教程中,我们旨在探索如何在 MySQL 中使用 COUNT IF 方法。

MySQL 中的 COUNT() 方法将表中的总行数作为输出。但在本文中,我们有兴趣了解如何根据数据中的特定 IF 条件计算信息。

只有当值满足 IF 查询片段中提到的表达式或条件时,IF 命令才向我们提供不同的非空值的总数。

让我们了解这种方法是如何工作的。

在开始之前,我们创建一个虚拟数据集来处理。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

在 MySQL 中使用 Count IF

COUNT IF 技术的基本语法如下所示。

SELECT  COUNT(IF(<condition>, <expr>, NULL)) AS alias FROM name_of_the_table;

如上面的查询所示,我们的目标是根据在 IF 子句中定义为 condition 的条件从特定表中计算在此处表示为 expr 的不同或非不同值。

在我们的学生详细信息表中,让我们计算不同的 stu_id 的总数,他们的 stu_firstNamereet 结尾。可以使用以下查询来完成此任务。

SELECT DISTINCT
    COUNT(DISTINCT IF(stu_firstName like '%reet',
            stu_id,
            NULL)) AS count_student_ids
FROM student_details;

此代码计算来自 student_details 表的不同数量的 stu_id,条件是 stu_firstName 应在 IF 子句中以 reet 结尾。

输出:

count_student_ids
1
注意
在上面的代码片段中,我们在 MySQL 中使用别名 count_student_idsAS 关键字。

COUNT IF 技术的替代方法是 SUM CASE 技术,它可以帮助我们获得类似的结果。

因此,在 COUNT IF 技术的帮助下,我们可以有效地计算基于 MySQL 表中特定条件的实体出现的总数。

作者: Preet Sanghavi
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

相关文章 - MySQL Query