在網上查詢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 返回乙個數字...