1. 程式人生 > >mysql中case用法

mysql中case用法

sql select 簡單 mman 但是 num 執行 res bytes

轉載請註明出處:

簡單CASE語句僅允許您將表達式的值與一組不同的值進行匹配。 為了執行更復雜的匹配,如範圍,您可以使用可搜索CASE語句。
可搜索CASE語句等同於IF語句,但是它的構造更加可讀。以下說明可搜索CASE語句的語法:
CASE
WHEN condition_1 THEN commands
WHEN condition_2 THEN commands
...
ELSE commands
END CASE;

MySQL評估求值WHEN子句中的每個條件,直到找到一個值為TRUE的條件,然後執行THEN子句中的相應命令(commands)。
如果沒有一個條件為TRUE,則執行ELSE子句中的命令(commands)。如果不指定ELSE子句,並且沒有一個條件為TRUE,MySQL將發出錯誤消息。

實例:

SELECT CASE u.playerType WHEN 1 THEN u.num ELSE 0 END AS livePlayCount, CASE u.playerType WHEN 2 THEN u.num ELSE 0 END AS vodPlayCount, CASE u.playerType WHEN 1 THEN u.flowNum ELSE 0 END AS liveFlow, CASE u.playerType WHEN 2 THEN u.flowNum ELSE 0 END AS vodFlow, 0 AS storeSpace
, 0 AS storeResidueSpace FROM ( SELECT playerType, COUNT(*) AS num, ifnull(SUM(bytesSend),0) AS flowNum FROM tbl_player_statistics WHERE playerTime BETWEEN CONCAT(DATE_FORMAT(#{month},%Y-%m),-01 00:00:00) AND CONCAT(DATE_FORMAT(last_day(#{month}),
%Y-%m-%d), 23:59:59) GROUP BY playerType )

mysql中case用法