1

私の問題を説明する簡単な例があります。このようにテーブルを構成したとしましょう=>

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

trueact_resetが(0でない場合は)列actDATETIMEを更新するという条件でクエリを記述したいと思います。

私はこのようにそれを試しました=>

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

しかし、この構文は無効です。1つのクエリでこの条件をどのように記述しなければなりませんか?ありがとう

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_resetWHERE句に移動するだけです。

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 に答える