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版权协议,转载请附上原文出处链接和本声明。