1

我有一个简单的例子来描述我的问题。可以说我的表格结构是这样的=>

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

我想编写查询,条件是如果 act_reset 是true(所以如果不是 0)则更新列actDATETIME。

我试过这样=>

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

但是这种语法无效,我必须如何用一个查询来编写这个条件?谢谢

4

3 回答 3

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; 
于 2012-08-29T10:07:37.223 回答
1

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

UPDATE A 
SET act = now() 
WHERE id = 1
AND act_reset <> 0
于 2012-08-29T10:08:24.117 回答
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;
于 2012-08-29T10:11:38.590 回答