2012-08-29 39 views
1

我用簡單的例子來描述我的問題。比方說我的表結構是這樣=>用mysql簡單流程控制

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; 

但這種語法是無效的,我怎麼必須編寫一個查詢這種狀況呢?謝謝

回答

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

這是你正在查詢的查詢?

使用If語句在MySQL:

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

的確是這樣,但有興趣與if語句也是如此,因爲我只是MySql中的一個begginer,並且想知道,感謝您的建議 – tnanoba

+0

@Tornike使用'IF'語句做這件事在SQL中是錯誤的。這沒有意義。總是試着根據你想要處理的數據集來制定你的問題 - 不要以控制流量(即基於思維集合,而不是命令)來考慮。 –

1

你並不需要使用CASE語句或IF聲明在這種情況下。只要移動狀態If act_resetWHERE條款,像這樣:

UPDATE A 
SET act = now() 
WHERE id = 1 
AND act_reset <> 0 
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;