mysql的if语句,如何在if不成立的时候不执行操作

MySQL的if语句可以用在很多地方,比如查询的时候,跟在select后面,修改的时候跟在update后面,也可以跟在条件 where后面

它的语法是这样的

IF(expr1,expr2,expr3)

如果expr1 成立,返回 expr2,否则返回 expr3。但是expr3如果不写那就会报错。

那么我们如何在if不成立的时候不执行操作?

在修改的时候

比如我想在修改的时候,如果state=1 就不修改发布时间和发布人:可以这样去写

注意 =1  和 ='1'  不一样,要看数据类型

<update id="UpdateNoticeStartOrPause" parameterType="Map">
    update
        rec_notice
    set
        NOTICESTATE = #{noticeState},
        UPDATEUSER = #{userId},
        UPDATETIME = now(),
        PUBLISHUSER = IF(#{noticeState} = 1, #{userId} ,PUBLISHUSER) ,
        PUBLISHDATE = IF(#{noticeState} = 1, now() , PUBLISHDATE )
    WHERE
        ...
        ...
</update>

在查询的时候:

如果  优先级一样,按照时间排序,不一样那就不执行条件

where

       state = 1

        and IF ( porder = #{porder} , createTime <= #{createTime} , 1=1 )


版权声明:本文为w13966597931原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。