mysql - 如何在 MySQL 的 IF 内设置多个用户变量

标签 mysql sql

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

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

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

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

最佳答案

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

0 和 x 始终为 0,因此 MySQL 不会计算 x。
OR 遇到同样的问题:1 OR x 始终为真。
这是一种通过在知道结果时立即停止来加快速度的方法。

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

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

1 XOR x 可以是任何东西,也可以是 0 XOR x

关于mysql - 如何在 MySQL 的 IF 内设置多个用户变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5881414/

相关文章:

php - MySQL覆盖或插入

mysql - 简单的 SQL 连接查询(我认为)

javascript - 通知 html 更新自身(向 HTML 发送信号)

mysql - 基于文本的主索引有哪些缺点

mysql - 选择MySQL中第二高的值

mysql - 使用查询将日期转换为长整型

mysql - 从表中检索数据,其中有 3 个表 A、B、C 。表C的引用在B中,表B的引用在A中

mysql - GROUP_CONCAT 字符串问题

mysql - sql 脚本适用于 MySQL,但不适用于 google bigquery

php - MySQL - 通过查询返回关联数组