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_1
和 condition_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 中的表中找到匹配的資料。