1. 程式人生 > >mysql case 表達式

mysql case 表達式

mysql case when

一、 背景

resc表保存了系統的一級、二級功能模塊,同時保存了二級功能模塊各頁面的功能,通過pid定義了父子關系。

想通過resc表,整理出一份,一級、二級功能模塊的對應關系,類似於這樣的結果。

技術分享圖片


二、 實現方法

select 
case 
when PID=1 then '用戶管理'
when PID=4 then '代理管理'
when PID=8 then '媒體管理'
when PID=21 then '報表管理'
when PID=26 then '內容管理'
when PID=30 then '業績管理'
when PID=34 then '財務管理'
END as menu,
`name`,PID 
from resc
where pid in (select id from resc where pid=0)
order by pid

執行結果:

技術分享圖片

將執行結果,粘貼到excel中,進行合並單元格,即可得到預期結果,可在excel中,對功能模塊進行跟蹤。


三、 理論

case表達式在sql中,可以實現if-then-else的邏輯。

有兩種類型的case表達式:

  • 簡單case表達式,使用表達式確定返回值;

  • 搜索case表達式,使用條件確定返回值。


  1. 使用簡單case表達式

  • 語法:

case search_expression

when expression1 then result1

when expression2 then result2

...

when expressionN then resultN

else default_result

end


  • 關鍵字說明:

    • search_expression, 待求值的表達式,數據表的某個字段;

    • expressionX, 是與search_expression進行比較的表達式;

    • result1 ,是符合表達式時,返回的值

    • default_result ,是無法匹配表達式時,默認返回值。



2. 搜索case表達式

  • 語法:

case

when condition1 then result1

when condition2 then result2

...

when conditionN then resultN

else default_result

end

  • 關鍵字說明:

    • condition, 是待求值的表達式;

    • result, 是返回值,condition1為真,則返回result1,以此類推。

    • default_result ,是無法匹配表達式時,默認返回值。



mysql case 表達式