MySQL ifnull的巢狀使用說明

2022-09-24 10:15:09 字數 1490 閱讀 2276

在網上查詢ifn程式設計客棧ull有沒有巢狀使用的方式,但是貌似沒有人提到過這個用法:大都是簡單的判斷乙個字段是否為空,然後用另外乙個值代替的方式使用;

即是:select ifnull(a,b) from a ;

每乙個商店會有兩種打折方式vip_discount與******_discount,從資料庫查出來以discou程式設計客棧nt欄位命名;且以vip_discount為主。

意思是如果vip_discount不為空,就返回它的值,若它的值為空就要進一步判斷******_discount欄位是否為空,如果不為空就返回******_discount的值,否則就返回乙個空字串。

這裡我就想到了可不可以使用ifnull巢狀來判斷達到我的目的。

在網上查了許久也沒有發現有類似的部落格,就尋思自己試試不就行啦:

select ifnull(vip_discount,ifnull(******_discount,"")) as discount from a;

這樣就解決問題了,此sql語句也可以在後面新增條件語句來補充其他條件查詢。

廢話不多說,直接看sql:

update

lb_user u

set u.user_level = (

select

ifnull(levelid, u.user_level)

from lb_user_level

where `status` = 1 and 程式設計客棧levelid > u.user_level

and (upgrade_score 程式設計客棧< u.empirical or upgrade_total_money < u.total_consumption_money)

order by levelid desc

limit 1

);這個sql乍一看沒什麼問題,執行的時候也成功了,可再次執行就修改出錯,原因是根據當前的條件無法檢索出資料,返回資料為空,注意是資料為空,沒有這條資料,而不是有這條資料存在該字段為空,經過排查,修改sql如下:

update

lb_user u

set www.cppcns.comu.user_level = ifnull((

select

levelid

from lb_user_level

where `status` = 1 and levelid > u.user_level

and (upgrade_score < u.empirical or upgrade_total_money < u.total_consumption_money)

order by levelid desc

limit 1

), u.user_level);

經過修改後執行就成功了,並且不存在ifnull失效的情況;

mysql中ifnull僅可以判斷該資料存在的情況下為null,而不能判斷該條資料沒有查詢到而為null的情況。

本文標題: mysql ifnull的巢狀使用說明

本文位址:

android ViewPager巢狀的使用方法

本文用 描述了viewpager內部巢狀viwepager的使用方法,經過測試沒有問題,如在使用過程中有問題可及時溝通 首先在自己建立的專案中任選乙個包來建立乙個類繼承viewpager import android.content.context import android.graphics.p...

MYSQL IFNULL函式的使用

下文對mysql ifnull函式的使用進行了詳細的敘述,供您參考學習,如果您在mysql ifnull函式使用方面遇到過類似的問題,不妨一看。mysql ifnull expr1,expr2 如果expr1不是null,ifnull 返回expr1,否則它返回expr2。ifnull 返回乙個數字...

MYSQL IFNULL函式的使用

下文對mysql ifnull函式的使用進行了詳細的敘述,供您參考學習,如果您在mysql ifnull函式使用方面遇到過類似的問題,不妨一看。mysql ifnull expr1,expr2 如果expr1不是null,ifnull 返回expr1,否則它返回expr2。ifnull 返回乙個數字...