Prev / Next / XINUJP - ChangeWebLog

mysql CASE の ELSE は必須!![mysql]

2013-10-17

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 は必須ですね。

permlink