什么是Case When
Case When是MySQL中一種非常有用的條件表達式,它允許我們根據條件選擇不同的結果。
語法和用法
語法格式如下:
SELECT
CASE expr
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE default_result
END
FROM table_name;
其中,expr
為要比較的值,value1
/value2
是表達式匹配的值。如果表達式匹配了其中一個值(例如value1
),將返回相應的結果(例如result1
),并且不會再執行后面的WHEN
和ELSE
塊。如果沒有任何匹配,將返回default_result
,如果沒有指定ELSE
塊,將返回NULL
。
案例分析
假設我們有一個學生表,并且要根據學生的分數將他們分為優秀,良好和差等三類。可以像這樣創建查詢:
SELECT
student_name,
score,
CASE
WHEN score >= 90 THEN '優秀'
WHEN score >= 80 THEN '良好'
ELSE '差'
END AS grade
FROM
student_table;
在這個例子中,我們首先檢查分數是否高于90分,如果是,返回‘優秀’,如果不是,就繼續執行下一條指令,檢查分數是否高于80分。如果是,返回“良好”,否則返回“差”。
多條件Case When
當我們需要比較多個條件時,可以使用多條件Case When。例如,我們希望將學生按照年齡和分數分成六類。可以像這樣創建查詢:
SELECT
student_name,
score,
age,
CASE
WHEN score >= 90 AND age<= 20 THEN '優秀年輕組'
WHEN score >= 90 AND age >20 THEN '優秀成熟組'
WHEN score >= 80 AND score< 90 AND age<= 20 THEN '良好年輕組'
WHEN score >= 80 AND score< 90 AND age >20 THEN '良好成熟組'
ELSE '其他'
END AS category
FROM
student_table;
在這個例子中,我們首先使用AND
邏輯運算符組合兩個條件,然后根據不同的組合返回相應的分類。
小結
使用Case When可以幫助我們在SQL語句中進行條件判斷和結果選擇。注意,在設置多條件時需要使用邏輯運算符來組合不同的條件。