使用mysql实现简单的流控制

使用mysql实现简单的流控制,mysql,sql,Mysql,Sql,我有一个简单的例子来描述我的问题。假设我的表结构如下=> create table A( id INT(3) NOT NULL AUTO_INCREMENT PRIMARY_KEY, act DATETIME, act_reset INT(1) DEFAULT 0); 我想写一个查询,条件是如果act\u reset为true(如果不是0),则更新列actDATETIME 我这样试过=> IF act_reset THEN UPDATE A SET act=now() WHERE id=1 E

我有一个简单的例子来描述我的问题。假设我的表结构如下=>

create table A(
id INT(3) NOT NULL AUTO_INCREMENT PRIMARY_KEY,
act DATETIME,
act_reset INT(1) DEFAULT 0);
我想写一个查询,条件是如果act\u reset为
true
(如果不是0),则更新列
act
DATETIME

我这样试过=>

IF act_reset THEN UPDATE A SET act=now() WHERE id=1 END IF;
但是这个语法是无效的,我必须如何用一个查询来编写这个条件?谢谢

更新设置act=now(),其中id=1,act\u重置0
UPDATE A SET act=now() WHERE id=1 AND act_reset <> 0
这就是你要找的问题吗

在MySQL中使用If语句:

IF act_reset <> 0 THEN 
  UPDATE A SET act=now() WHERE id=1 
END IF; 
如果动作重置为0,则
更新集合act=now(),其中id=1
如果结束;
更新设置act=now(),其中id=1,act\u重置0
这就是你要找的问题吗

在MySQL中使用If语句:

IF act_reset <> 0 THEN 
  UPDATE A SET act=now() WHERE id=1 
END IF; 
如果动作重置为0,则
更新集合act=now(),其中id=1
如果结束;

在这种情况下,您不需要使用
CASE
语句或
IF
语句。只要将条件
If act_reset
移动到
WHERE
子句,如下所示:

UPDATE A 
SET act = now() 
WHERE id = 1
AND act_reset <> 0
更新A
SET act=now()
其中id=1
然后重新设置0

在这种情况下,您不需要使用
CASE
语句或
IF
语句。只要将条件
If act_reset
移动到
WHERE
子句,如下所示:

UPDATE A 
SET act = now() 
WHERE id = 1
AND act_reset <> 0
更新A
SET act=now()
其中id=1
然后重新设置0

假设
act\u reset
是一个变量名。您忘记了分号,还需要使用分隔符

DELIMITER $$
IF act_reset <> 0 
THEN 
    UPDATE A SET act=now()
    WHERE id = 1 $$ 
END IF$$
DELIMITER ;

假设
act\u reset
是一个变量名。您忘记了分号,还需要使用分隔符

DELIMITER $$
IF act_reset <> 0 
THEN 
    UPDATE A SET act=now()
    WHERE id = 1 $$ 
END IF$$
DELIMITER ;

是的,但我也对if语句感兴趣,因为我只是MySql的乞丐,我想知道,谢谢你advice@Tornike在SQL中,使用
IF
语句执行此操作是错误的。这没有道理。总是试着用你想处理的数据集来表达你的问题-不要用控制流来思考(即,基于集合的思考,而不是强制性的)。是的,但也对if语句感兴趣,因为我只是MySql的乞丐,我想知道,谢谢你advice@Tornike在SQL中,使用
IF
语句执行此操作是错误的。这没有道理。始终尝试根据您想要处理的数据集来表述您的问题-不要从控制流的角度来思考(即基于数据集的思考,而不是强制性的思考)。