MYSQL case when 的兩種用法

?第一種:簡單Case函數(shù)?

? ? ? ? ? ? ? case 列名

    when ? 條件值1 ? then ?選擇項1

    when ? 條件值2 ? ?then ?選項2.......

    else ? ? 默認值 ? ? ?end

第二種:Case搜索函數(shù)

? ? ? ? ? ? ? case ?

    when ?列名= 條件值1 ? then ?選擇項1

    when ?列名=條件值2 ? ?then ?選項2.......

    else ? ?默認值 end

比較: 兩種格式,可以實現(xiàn)相同的功能。簡單Case函數(shù)的寫法相對比較簡潔,但是和Case搜索函數(shù)相比,功能方面會有些限制,比如寫判斷式。

還有一個問題,Case函數(shù)只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。如下面這個例子:

CASE col

WHEN col_1 IN ( 'a', 'b') THEN '第一類'

WHEN col_1 IN ('a')? ? ? THEN '第二類'

ELSE'其他' END

這個語句中,滿足條件a永遠不會返回第二類,因為按順序發(fā)現(xiàn)a在第一類的時候查詢就已經(jīng)結(jié)束了。所以case無法用于一個東西在一個分類里有不同的屬性的條件。

case when 好處很明顯就是非常易于看懂,相比實現(xiàn)同樣條件用復(fù)雜的自連接查詢,在邏輯上很容易看懂(自連接查詢在不同的情況下可能會有BUG)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容