欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL ifnull的嵌套使用說明

 更新時(shí)間:2021年06月16日 14:50:03   作者:ls0111  
這篇文章主要介紹了MySQL ifnull的嵌套使用說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MySQL ifnull的嵌套使用

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

即是:

select ifnull(a,b) from A ;

但是我遇到的問題是兩個(gè)字段,大概場景是這樣的:

每一個(gè)商店會(huì)有兩種打折方式vip_discount與simple_discount,從數(shù)據(jù)庫查出來以discount字段命名;且以vip_discount為主。

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

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

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

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

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

MYSQL之ifnull的那些坑

廢話不多說,直接看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
);

這個(gè)SQL乍一看沒什么問題,執(zhí)行的時(shí)候也成功了,可再次執(zhí)行就修改出錯(cuò),原因是根據(jù)當(dāng)前的條件無法檢索出數(shù)據(jù),返回?cái)?shù)據(jù)為空,注意是數(shù)據(jù)為空,沒有這條數(shù)據(jù),而不是有這條數(shù)據(jù)存在該字段為空,經(jīng)過排查,修改SQL如下:

UPDATE
    lb_user u
SET u.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);

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

總結(jié)原因是因?yàn)椋?/h3>

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL的MaxIdleConns不合理,會(huì)變成短連接的原因

    MySQL的MaxIdleConns不合理,會(huì)變成短連接的原因

    這篇文章主要介紹了MySQL的MaxIdleConns不合理,會(huì)變成短連接的原因,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-01-01
  • MySQL8.0.20安裝教程及其安裝問題詳細(xì)教程

    MySQL8.0.20安裝教程及其安裝問題詳細(xì)教程

    這篇文章主要介紹了MySQL8.0.20安裝教程及其安裝問題處理,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • SQL函數(shù)Group_concat的用法及說明

    SQL函數(shù)Group_concat的用法及說明

    這篇文章主要介紹了SQL函數(shù)Group_concat的用法及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • mysql之臟讀、不可重復(fù)讀、幻讀的區(qū)別及說明

    mysql之臟讀、不可重復(fù)讀、幻讀的區(qū)別及說明

    這篇文章主要介紹了mysql之臟讀、不可重復(fù)讀、幻讀的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 關(guān)于MySQL innodb_autoinc_lock_mode介紹

    關(guān)于MySQL innodb_autoinc_lock_mode介紹

    下面小編就為大家?guī)硪黄P(guān)于MySQL innodb_autoinc_lock_mode介紹。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySQL索引的缺點(diǎn)以及MySQL索引在實(shí)際操作中有哪些事項(xiàng)

    MySQL索引的缺點(diǎn)以及MySQL索引在實(shí)際操作中有哪些事項(xiàng)

    以下的文章主要介紹的是MySQL索引的缺點(diǎn)以及MySQL索引在實(shí)際操作中有哪些事項(xiàng)是值得我們大家注意的,我們大家可能不知道過多的對索引進(jìn)行使用將會(huì)造成濫用,需要的朋友可以了解下
    2012-12-12
  • 一文帶你搞懂MySQL的MVCC機(jī)制

    一文帶你搞懂MySQL的MVCC機(jī)制

    MySQL中的MVCC機(jī)制想必大家都有所耳聞吧,雖然在平時(shí)MySQL使用過程中基本上用不到,但是面試中出場率十分高,那么你對MVCC機(jī)制了解多少呢,MVCC機(jī)制是用來干嘛的呢,底層的工作原理是怎么樣的呢,本文就帶你一探究竟
    2023-07-07
  • 阿里云配置MySQL-server?8.0遠(yuǎn)程登錄的實(shí)現(xiàn)

    阿里云配置MySQL-server?8.0遠(yuǎn)程登錄的實(shí)現(xiàn)

    我們經(jīng)常會(huì)碰到需要遠(yuǎn)程訪問數(shù)據(jù)庫的場景,本文主要介紹了阿里云配置MySQL-server?8.0遠(yuǎn)程登錄的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • mysql用一個(gè)表更新另一個(gè)表的方法

    mysql用一個(gè)表更新另一個(gè)表的方法

    下面小編就為大家?guī)硪黄猰ysql用一個(gè)表更新另一個(gè)表的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • MySQL連接異常:Communications link failure問題及解決

    MySQL連接異常:Communications link failure問題及解決

    這篇文章主要介紹了MySQL連接異常:Communications link failure問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論