0

私は2つのテーブルを持っています:

-Card
id
points

-History
CardId
points

ここで、同じcardIdを持つ履歴内のポイントに基づいて、カードテーブル内のポイントを差し引く更新クエリを実行したいと思います。

たとえば、私は行を持っています:

-card
1 10
2 30

-History
1 5
1 3
2 10 
2 9

その結果、カードテーブルの行に次のように表示されます。

-card
1 2
2 11

それを行うための最良の方法は何ですか?

4

1 に答える 1

1

これでうまくいきます。

update card
set points = points - total
from card
    inner join (select cardid, sum(points) as total from history) v 
    on card.id = v.cardid

しかし、私はあなたのデータベース構造を疑問視する他のコメントに同意します

于 2012-09-18T18:36:59.383 に答える