如何在MySQL上的IF中设置多个用户变量

时间:2011-05-04 09:36:32

标签: mysql sql

我有一种情况,我想在条件设置时设置多个变量。

IF(expr1, @reading:=0 and @prevdate:=@stepdate, @reading:=@reading)

如您所见,我想设置@reading:=0 and @prevdate:=@stepdate,但这不起作用。

如何在truefalse节点内设置多个用户变量?

1 个答案:

答案 0 :(得分:2)

<强>问题
AND进行短路评估 @reading:= 0的计算结果为0,这是错误的。

0 and x始终为0,因此MySQL不打算评估x OR遇到同样的问题:1 OR x总是如此 如果已知结果,这可以通过停止来加快速度。

<强>解决方案
将其更改为@reading:= 0 XOR @prevdate:= @stepdate

这将解决您的问题,因为XOR不会受到短路评估的影响。

1 XOR x可以是0 XOR x