2016-08-06 9 views
1

私は更新にいくつか問題があります。データベースに1つのレコードがあると正しく動作しますが、1を超えると正常に動作しませんでした。多くの(複数の)行を更新する

ここ

はコードです:

UPDATE rozl 
SET amountAfter = (SELECT amountBefore - (amount + destroyed) FROM rozl) 

表Iは、アップデートを実行している場合は

id number amountBefore amount destroyed amountAfter 
    1   3   100  30   20    50 
    2   4   50   10   3    NULL 

のように見える、私はamountAfterが値で埋める得ることを期待。私は取得しています

エラー:

サブクエリは複数の値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。

私はこのアップデートを実行しますが、私は正しい2行を取得しますが、更新できません。選択から

出力は次のとおりです。

1 50 
    2 37 

私が言ったように、それは正しいのですが、私はどのようにアップデートでそれを書くには考えていませんでした。

答えて

5

あなたはサブクエリを必要はありません。

update rozl 
set amountAfter= amountBefore - (amount + destroyed) 

コメントし、あなたが操作の順序問題として括弧を必要とするそうであるように。

+1

質問に指定されているかっこを追加することができます。最初のケースでは100 - 30 + 20、つまり50ではなく90になります。 –

+0

ああ、私の神、私はとてもばかげている:(!ありがとう、私はちょうど()を追加します。 – JustSomeNewbie

+0

@BobJarvis - 優秀なポイント... – sgeddes