前言:
现在朋友们对“mysql函数过程条件判断函数使用if表名报错”大致比较关切,兄弟们都需要学习一些“mysql函数过程条件判断函数使用if表名报错”的相关资讯。那么小编同时在网摘上汇集了一些有关“mysql函数过程条件判断函数使用if表名报错””的相关资讯,希望咱们能喜欢,你们一起来学习一下吧!引言
今天一大早上,产品经理杨姐就来找我说:“小米,赶紧看看群里,运营的童鞋说系统无论是B端还是C端,秒杀频道都不能打开了,每天都有秒杀活动,这事很着急啊”!好家伙,看来事情确实蛮严重的……
定位问题
我立刻打开电脑,查看日志,发现日志中报错信息是 “SQL语句” 执行错误,我把sql语句捞出来放到 Navicat 上,并填充相应的参数,发现报以下错误:
分析了该sql语句,并把 不相关的where查询条件 干掉,最后把问题定位到这一行:
最终发现是 IF()函数 中,条件为 false 执行的语句有问题,即“g.goods_sub_type IN NULL” 报错!
修复问题
既然发现出现问题的地方,就开始着手修复问题,看了下业务逻辑,IN 后面的是一个固定的数组,所以把 IN 后面写成固定数组即可,像这样:
搞定!
MySQL IF()函数
IF()函数在条件为TRUE时返回一个值,如果条件为FALSE则返回另一个值。
语法如下:
IF(condition, value_if_true, value_if_false)
注意IF() 函数,无论 condition 为 true 还是 false,后面两个语句是一定会被运行的,即要保证 value_if_true 和 value_if_false 的语法是正确的,而不是认为 condition 为 true 的时候,value_if_false 会移除掉。就像在本例中,开发人员错误的任务当 NULL IS NULL 的时候, 只有 1 = 1 ,而 g.goods_sub_type IN NULL 会去掉。IN 语句后面的范围一定要用 小括号 “()” 包裹才可以。END
好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。