2011年12月2日金曜日

[SQL]Update文でCaseを使う

例えば、あるステータスが1の場合に限ってシステム日付を更新するのだけれど、
それ以外の場合は更新したくない場合のUpdate文です。
この時、合わせてステータスは2に更新します。
(わかりにくいせつめいですいません)

update Table set 
 UpdateDatetime = case when Status = 1 
  then now() 
  else UpdateDatetime 
 end  
 ,Status = 2
where Primarykey = 100

MySQLでの確認です。
これはset句に書く順番も関係していますので注意が必要です。
先にStatus = 2を書いてしまうとcaseは思った判定をしてくれません。

0 件のコメント: