1

簡単な更新ステートメントがあります。

Update tbABC
Set salary = 1000, name = 'mike'
Where Id = 1

給与を更新するときに条件を追加する必要があります。給与 = 0 の場合は 1000 に変更します。それ以外の場合は給与は変更されません。

調査を行ったところ、同様の質問が見つかりました。 SQLで条件付き更新ステートメントを使用する

Update tbABC
Set salary = CASE WHEN (salary = 0) then 1000 ELSE ??????? END, 
    name = 'mike'
Where Id = 1

私はそれに行き詰まった???? 部。ここで、給与 = 給与にするためにそこに何を入れるかを確認します。

4

2 に答える 2

2

これはうまくいくはずです

Update tbABC
Set salary = CASE WHEN (salary = 0) then 1000 ELSE salary END, 
name = 'mike'
Where Id = 1
于 2013-07-11T00:28:44.200 に答える
2

絶対に必要でない限り、複雑な CASE 関数よりも WHERE 句を使用することをお勧めします。単純化すると、次のようになります。

update tbABC set salary=1000, name='mike'   -- using condition for both field updates
where Id=1 and salary=0;

または、トランザクション全体で正確なロジックを保持します:

update tbABC set salary=1000      -- by ID & only if second condition met
where Id=1 and salary=0;

update tbABC set name='mike'      -- by ID.
where Id=1;

従業員の名前を無条件に更新する現実世界のケースがあるとは本当に信じていませんが、彼の給与の更新には何らかの条件があります。

于 2013-07-11T00:38:24.770 に答える