使用mysql进行简单的流量控制

时间:2012-08-29 10:05:23

标签: mysql sql

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

create table A(
id INT(3) NOT NULL AUTO_INCREMENT PRIMARY_KEY,
act DATETIME,
act_reset INT(1) DEFAULT 0);

我想用条件编写查询,如果act_reset是true(如果不是0),那么更新列act DATETIME。

我已经尝试过这样的=>

IF act_reset THEN UPDATE A SET act=now() WHERE id=1 END IF;

但是这个语法无效,我怎么用一个查询写这个条件?感谢

3 个答案:

答案 0 :(得分:3)

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; 

答案 1 :(得分:1)

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

UPDATE A 
SET act = now() 
WHERE id = 1
AND act_reset <> 0

答案 2 :(得分:1)

假设act_reset是变量名称。您忘记了semicolon,还需要使用DELIMITER

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

如果act_reset是列名,那么在这种情况下使用IF子句是不可能的,请尝试这样做:

    UPDATE A 
    SET act = now()
    WHERE id = 1 AND
          act_reset <> 0;