2011-09-13 16 views
0

現在のcol値または新しい値のいずれかの最大値を持つ列を更新したいとします。擬似コードで:最大2つの値を持つ列値を更新する

更新TABLE1セット社員上記の場合にそうID = 23

、= MAX(従業員、30):従業員は現在20であれば、従業員である場合 、新しい値が30 となるであろう現在50、値は残ります50

どうすればいいですか?利用可能な単純な標準機能はありますか(私はむしろケースステートメントを使用したくない)

ありがとう!

+0

が、それは現在の値だと、なぜあなたが列を変更するのでしょうか?必要に応じて、私はあなたのサーバーをはるかに遅くするスクリプトを見つけることができます。 –

答えて

1
Update table1 
set employees = (case when employees < 30 then 30 else employees end) 
where id = 23 
2

あなたはemployees < 30と行のみを更新するwhere句を使用することができます。私の好奇心申し訳

update table1 
set employees = 30 
where id = 23 and employees < 30 
+0

+1 - 最小限のデータ変更が必要です – JNK

+0

ありがとう!良い提案ですが、正確には私が必要とするものではありません。私の間違いは、私はより明確にすべきであった.1つ以上の列(最大100まで)でMAXステートメントを実行したい。 だから、文はより次のようになります。 従業員は= MAX(従業員、30)、 streetname = MAX(streetname、 'アビーロード') 売上高= MAX(売上高、500000) ID のUPDATE TABLE1のSET = 23 – Flo

+0

@Floran、その場合、私の答えはあなたのために働くと思います。複数のcase文が必要です。 'case'ステートメントはあなたのMAX関数と同じことをします。 @Andomarは、1つの列のみを更新している場合でも、より良いソリューションを提供します。 – PaulStock

関連する問題