CASE
書
は、CASE文には2つの構文があります
SYNTAX 1:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
SYNTAX 2:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list]
END CASE
構文の一つ上の
説明:最初の構文について
、case_valueは式です。この値は、各WHEN節のwhen_value式と比較されます。等しいwhen_valueが見つかると、対応するTHEN文節statement_listが実行されます。 when_valueが等しくない場合、ELSE節statement_listが存在すればそれが実行されます。
この構文は、NULL = NULLがfalseであるため、NULLとの等価性のテストに使用できません。構文つに
説明:第2のシンタクスについて
、各節SEARCH_CONDITION発現が1になるまで評価された時点、そのTHEN対応句statement_listが実行される時、真です。 search_conditionが等しくない場合、ELSE節statement_listが存在すればそれが実行されます。
when_valueまたはsearch_conditionがテストされた値と一致せず、CASEステートメントにELSE句が含まれていない場合、CASEステートメントエラーではケースが見つかりません。
各statement_listは、1つ以上のSQL文で構成されています。空のstatement_listは許可されません。
WHEN句で値が一致しない状況を処理するには、この例に示すように、空のBEGIN ... ENDブロックを含むELSEを使用します。 (ELSE句にここで使用するインデントだけ明確にする目的のためであり、それ以外の場合は重要ではありません。)
DELIMITER |
CREATE PROCEDURE p()
BEGIN
DECLARE v INT DEFAULT 1;
CASE v
WHEN 2 THEN SELECT v;
WHEN 3 THEN SELECT 0;
ELSE
END;
END CASE;
END;
|
そして、あなたのコードは次のようにCASE文を使用して更新することができます。..
UPDATE `crm_accounts` SET `reg` = CASE
WHEN age >= 17
AND age <= 35
AND balance > 0.00
AND type = "Júnior" THEN "Sim"
WHEN age >= 17
AND age <= 35
AND balance = 0.00
AND type = "Júnior" THEN "Não"
WHEN age >= 17
AND age <= 35
AND type = "Júnior" THEN "Efetivo"
ELSE `reg`
END
何を試しましたか?いくつかの読書:http://stackoverflow.com/a/15745186/180100 –