最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql中update按照多重條件進(jìn)行更新處理的方案

 更新時(shí)間:2022年09月09日 16:23:54   作者:賣柴火的小伙子  
更新數(shù)據(jù)是使用數(shù)據(jù)庫(kù)時(shí)最重要的任務(wù)之一,下面這篇文章主要給大家介紹了關(guān)于mysql中update按照多重條件進(jìn)行更新處理的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1.場(chǎng)景問題說明

mysql中一般的update寫法支持的方式是,update 表 set 字段名=修改后的字段值 where 條件1 and 條件2 and 其他條件;如果現(xiàn)在需求是對(duì)滿足where后面的條件基礎(chǔ)之上需對(duì)滿足指定的條件數(shù)據(jù)再進(jìn)行不同更新處理,那應(yīng)該如何處理?如果有這樣的疑問或是遇到此類場(chǎng)景請(qǐng)繼續(xù)往下看.

還原一下我遇到的業(yè)務(wù)場(chǎng)景:現(xiàn)有一批會(huì)員卡,會(huì)員卡類型有次數(shù)卡和期限卡之分,期限卡余額為每天扣除一天,次數(shù)卡余額不隨時(shí)間進(jìn)行變化,只有使用之后才會(huì)扣除?,F(xiàn)需要對(duì)會(huì)員卡進(jìn)行更新截止時(shí)間的操作,其中只需要對(duì)期限卡更新余額操作。主要問題的難點(diǎn)在于會(huì)員卡類型為期限卡的會(huì)員卡,不僅需要更新有效截止時(shí)間,還需要更新會(huì)員卡的余額。為方便說明問題,簡(jiǎn)化業(yè)務(wù)如下:將會(huì)員卡id為1、2、3的截止日期更新為2022-05-01 22:50:59,其中期限卡余額更新為11.次數(shù)卡余額不做處理(會(huì)員卡id為1和2為期限卡,3為次數(shù)卡)。

會(huì)員卡表信息:

2.處理方案

2.1 使用update case when

sql如下:

UPDATE staff_card SET end_time="2022-05-01 22:50:59",update_time=NOW(),
rest_count=(CASE WHEN card_type=1 THEN 11 ELSE rest_count END) WHERE id IN  (1,2,3)

配置文件寫法:

 <update id="updateRestCount" >
           UPDATE staff_card
            <set>
            end_time="2022-05-01 22:50:59",update_time=NOW(),
rest_count=(CASE WHEN card_type=1 THEN 11 ELSE rest_count END)
           </set> 
            WHERE id IN  
            ( 
				<foreach collection="cardIds" item="cardId">
					#{cardId}
				</foreach>
			)  
    </update>

注意寫法:只對(duì)于期限卡才更新余額,次數(shù)卡余額不更新,也就是次數(shù)卡的余額rest_count字段不進(jìn)行更新,直接寫ELSE rest_count,如果次數(shù)卡余額更新為其他金額,則ELSE 后面寫具體的余額值.

2.2 使用if標(biāo)簽

組裝會(huì)員卡列表信息,將每個(gè)會(huì)員卡的卡類型進(jìn)行設(shè)置

  ArrayList<CardInfo> cardList= new ArrayList<>();
        CardInfo cardInfo = new CardInfo();
        // 設(shè)置會(huì)員卡id
        cardInfo.setId(1);
        // 設(shè)置會(huì)員卡類型:1.期限卡;2.次數(shù)卡
        cardInfo.setCardType(1);
        CardInfo cardInfo2 = new CardInfo();
        cardInfo2.setId(2);
        cardInfo2.setCardType(1);
        CardInfo cardInfo3 = new CardInfo();
        cardInfo3.setId(3);
        cardInfo3.setCardType(2);
        cardList.add(cardInfo);
        cardList.add(cardInfo2);
        cardList.add(cardInfo3);

mapper接口:

public interface CardMapper {
    // 更新會(huì)員卡信息
    void updateRestCount(@Param("cardList") List<CardInfo> cardInfos);
}

配置文件:

 <update id="updateRestCount" >
        <foreach collection="cardList" item="card">
            UPDATE staff_card
            <set>
               end_time="2022-05-01 22:50:59",update_time=NOW(),
                <if test="card.cardType == 1">
                    rest_count =11
                </if>
            </set>
            WHERE id=#{card.id};
        </foreach>
    </update>

總結(jié)

到此這篇關(guān)于mysql中update按照多重條件進(jìn)行更新處理的文章就介紹到這了,更多相關(guān)mysql update按多重條件更新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

宽城| 淳化县| 新建县| 锡林郭勒盟| 阿克陶县| 扬中市| 祁东县| 镇安县| 石嘴山市| 北安市| 来安县| 龙州县| 治多县| 乌兰浩特市| 始兴县| 阿克苏市| 怀集县| 湟源县| 哈巴河县| 方正县| 新化县| 安泽县| 延庆县| 南通市| 嵊州市| 阜阳市| 石景山区| 昌黎县| 铜山县| 望都县| 巴东县| 宽甸| 邵阳市| 邵东县| 小金县| 白城市| 海口市| 茂名市| 东光县| 松潘县| 青川县|