2013-10-17 Thu
■ mysql CASE の ELSE は必須!! [mysql]
mysql SQL で、CASE を使った UPDATE を実行。
UPDATE table1
SET
ccc =
CASE
WHEN aaa = '111'
THEN '888'
WHEN aaa = '222'
THEN '999'
END
;
と、ccc = 888/999 は、思った通りに設定されたが、それ以外のレコードの ccc には null が設定されてしまった!!
http://dev.mysql.com/doc/refman/5.1/ja/control-flow-functions.html によると
一致する結果値がない場合は、ELSE のあとの結果が戻され、ELSE パートがない場合は、NULL が戻されます。
だそうな...
なので、ELSE を追加した次が正しい記述。
UPDATE table1
SET
ccc =
CASE
WHEN aaa = '111'
THEN '888'
WHEN aaa = '222'
THEN '999'
ELSE ccc
END
;
ELSE は必須ですね。
最終更新時間: 2025-01-14 10:03