色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

MySQL ifnull的嵌套使用說明

瀏覽:110日期:2023-10-01 17:11:56
MySQL ifnull的嵌套使用

在網上查詢ifnull有沒有嵌套使用的方式,但是貌似沒有人提到過這個用法:大都是簡單的判斷一個字段是否為空,然后用另外一個值代替的方式使用;

即是:

select ifnull(a,b) from A ;但是我遇到的問題是兩個字段,大概場景是這樣的:

每一個商店會有兩種打折方式vip_discount與simple_discount,從數據庫查出來以discount字段命名;且以vip_discount為主。

意思是如果vip_discount不為空,就返回它的值,若它的值為空就要進一步判斷simple_discount字段是否為空,如果不為空就返回simple_discount的值,否則就返回一個空字符串。

這里我就想到了可不可以使用ifnull嵌套來判斷達到我的目的。

在網上查了許久也沒有發(fā)現有類似的博客,就尋思自己試試不就行啦:

select ifnull(vip_discount,ifnull(simple_discount,'')) as discount from A;

這樣就解決問題了,此SQL語句也可以在后面添加條件語句來補充其他條件查詢。

MYSQL之ifnull的那些坑

廢話不多說,直接看SQL:

UPDATE lb_user uSET u.user_level = ( SELECTIFNULL(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乍一看沒什么問題,執(zhí)行的時候也成功了,可再次執(zhí)行就修改出錯,原因是根據當前的條件無法檢索出數據,返回數據為空,注意是數據為空,沒有這條數據,而不是有這條數據存在該字段為空,經過排查,修改SQL如下:

UPDATE lb_user uSET u.user_level = IFNULL(( SELECTlevelid 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);

經過修改后執(zhí)行就成功了,并且不存在IFNULL失效的情況;

總結原因是因為:

MYSQL中IFNULL僅可以判斷該數據存在的情況下為NULL,而不能判斷該條數據沒有查詢到而為NULL的情況。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 欧美国产合集在线视频 | 久久国产国内精品对话对白 | 国产一区欧美二区 | 亚洲m男在线中文字幕 | 国产在线精品一区二区不卡 | 婷婷色综合久久五月亚洲 | 欧美性色黄大片一级毛片视频 | 久久91精品综合国产首页 | 亚洲狠狠ady亚洲精品大秀 | 91久久国产综合精品 | 亚洲天堂视频在线免费观看 | www中文字幕 | 欧美日韩在线视频不卡一区二区三区 | 日韩视频国产 | 免费视频一区二区三区四区 | 国产精品亚洲片在线观看不卡 | 韩国欧美一级毛片 | 欧美jizzhd精品欧美高清 | 欧美手机手机在线视频一区 | 作爱视频在线免费观看 | 亚洲男人精品 | 中文字幕一区二区三区免费视频 | 久久爽久久爽久久免费观看 | 欧美亚洲网站 | 午夜宅男在线永久免费观看网 | 一级毛片aaaaaa视频免费看 | 91最新地址永久入口 | 国产在线成人精品 | 在线日韩欧美 | 91精品一区二区三区在线播放 | 女人张开腿让男人桶免费最新 | 亚洲成a人不卡在线观看 | 久久99精品久久久久久国产越南 | 成人国产视频在线观看 | 久久久一区二区三区不卡 | av成人天堂 | 色偷偷亚洲女人天堂观看欧 | 狠狠色丁香婷婷综合久久来 | 日韩欧美毛片免费观看视频 | 免费v片视频在线观看视频 免费v片在线观看 | 日韩精品久久久毛片一区二区 |