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