HOWTO · MySQL

MySQL 中的 COUNT IF 方法

本教程演示如何在 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_firstName 以 reet 結尾。可以使用以下查詢來完成此任務。

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_ids 和 AS 關鍵字。

COUNT IF 技術的替代方法是 SUM CASE 技術,它可以幫助我們獲得類似的結果。

因此,在 COUNT IF 技術的幫助下,我們可以有效地計算基於 MySQL 表中特定條件的實體出現的總數。