摘要:MySQL觸發器里的流程控制語句的 CASE WHEN 的語法有兩種:一、簡單函數CASE [col_name] WHEN [value1] THEN [result1] ELSE [default] END舉個例子:...
MySQL觸發器里的流程控制語句的 CASE WHEN 的語法有兩種:
一、簡單函數
CASE [col_name] WHEN [value1] THEN [result1] ELSE [default] END
舉個例子:
SELECT `groupid`, `status`, CASE WHEN groupid = '1' THEN '初來乍到' WHEN groupid = '2' THEN '新手上路' WHEN groupid = '3' THEN '融會貫通' ELSE '未知' END AS groupname, CASE WHEN `status` = '1' THEN '正常' ELSE '未通過' END AS status_name FROM yzm_member LIMIT 20
二、搜索函數
CASE WHEN [expr] THEN [result1] ELSE [default] END
搜索函數可以寫判斷,并且搜索函數只會返回第一個符合條件的值,符合條件的值也可以是表的字段,其他case被忽略,舉個例子:
SELECT `groupid`, `status`, CASE WHEN groupid < '3' THEN '新手' ELSE '高級' END AS groupname, CASE WHEN `status` = '1' THEN '正常' ELSE '未通過' END AS status_name FROM yzm_member LIMIT 20
搜索函數與聚合函數結合使用,舉個例子:
#1.查詢出每門課程的及格人數和不及格人數
SELECT 課程號, sum(case when 成績 >= 60 then 1 else 0 end) as 及格人數, sum(case when 成績 < 60 then 1 else 0 end) as 不及格人數 FROM score GROUP BY 課程號;
#2.簡單函數,實現行列互換
SELECT 學號, max(case 課程號 when '0001' THEN 成績 else 0 END) as `課程0001`, max(case 課程號 when '0002' THEN 成績 else 0 END) as `課程0002`, max(case 課程號 when '0003' THEN 成績 else 0 END) as `課程0003` FROM score GROUP BY 學號
網友評論:
long time no see
2021-09-19 23:08:46 回復
網友評論:
現在是深夜11點,越是夜深人靜的時候,想的越明白,很受用
2021-09-19 23:06:08 回復