使用连接更新表但使用求和值

时间:2012-09-18 18:26:30

标签: sql sql-server-2005

我有两张桌子:

-Card
id
points

-History
CardId
points

现在我想执行更新查询,该查询根据具有相同cardId的历史记录中的点减去Card表中的点

例如我有行:

-card
1 10
2 30

-History
1 5
1 3
2 10 
2 9

因此我应该在Card表行中:

-card
1 2
2 11

最好的方法是什么?

1 个答案:

答案 0 :(得分: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

但我同意质疑您的数据库结构的其他评论