MySQL 中的 CASE WHEN

Preet Sanghavi 2023年1月3日
MySQL 中的 CASE WHEN

在本教程中,我們旨在瞭解如何在 MySQL 資料庫中使用 CASE WHEN 語句。

處理大量資料的企業和組織需要根據特定條件過濾資料。而如果有多個條件,程式設計師就很難寫出高效的查詢來快速檢索資料。

MySQL 藉助 CASE WHEN 語句幫助我們執行此操作。

CASE WHEN 語句在所有處理 MySQL 資料過濾的工作場所都非常有用。讓我們看看這個方法的實際效果。

但在我們開始之前,讓我們通過建立一個包含幾行的表 student_details 來建立一個虛擬資料集。

-- 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,"Preet","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

上面的查詢建立了一個表,其中包含學生的名字和姓氏。要檢視資料中的條目,我們使用以下程式碼:

SELECT * FROM student_details;

上面的程式碼將給出以下輸出:

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Preet	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

設定好表後,讓我們使用 CASE WHEN 語句過濾這些資料。

MySQL 中的 CASE WHEN

如上所述,CASE WHEN 語句幫助我們獲取滿足其表示式中指定條件的值。

這是 CASE WHEN 語句的基本語法:

CASE
    WHEN condition_1 THEN output_1
    WHEN condition_2 THEN output_2
    ELSE output_3
END;

上述程式碼在滿足 condition_1 時返回 output_1,在滿足 condition_2 時返回 output_2,在不滿足 condition_1condition_2 時返回 output_3

現在,讓我們根據 stu_id 過濾 student_details 表。當 stu_id 小於或等於三時,我們希望列印 student with small id,當 stu_id 大於三時,我們列印 student with large id

我們可以使用以下程式碼執行此操作。

SELECT stu_id, stu_firstName,
CASE
    WHEN stu_id > 3 THEN 'student with greater id'
    ELSE 'student with smaller id'
END as case_result
FROM student_details;

上述查詢的輸出如下。

stu_id	stu_firstName	case_result
1		Preet			student with smaller id
2		Rich			student with smaller id
3		Veron			student with smaller id
4		Preet			student with greater id
5		Hash			student with greater id
6		Sachin			student with greater id
7		David			student with greater id

正如我們在上述程式碼塊中看到的那樣,stu_id 大於 3 的學生會得到 student with greater id 作為案例結果。否則,我們將得到 id 較小的學生作為案例結果。

注意
在上述程式碼中,我們使用別名 case_result 以獲得更好的可讀性,並在 MySQL 中使用 as AS 關鍵字。

因此,在 CASE WHEN 語句的幫助下,我們可以有效地遍歷不同的條件並從 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