我有一个简单的例子来描述我的问题。假设我的表格结构如此=>
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;
但是这个语法无效,我怎么用一个查询写这个条件?感谢
答案 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;