我有两张桌子
TableA:
ID Amount
1 100
TableB:
ID Interest
1 10
1 20
我希望通过每个交配记录对TableB的兴趣来增加TableA.Amount。如何为此编写更新语句?我在下面尝试过,但它仅使用第一个匹配记录更新金额。
UPDATE a
SET a.Amount = a.Amount + b.Intereset
FROM TableA a JOIN TableB b ON a.ID = b.ID
这是我得到的结果:
TableA:
ID Amount
1 110
但是,预期的结果是:
TableA:
ID Amount
1 130
答案 0 :(得分:3)
试试这个
Mapper.CreateMap<A, B>()
.ForMember(x => x.Prop, opt => opt.Condition(src => src.
Correlated sub-query
或使用UPDATE TableA
SET Amount = Amount + ISNULL((SELECT sum(b.Intereset)
FROM TableB b
WHERE TableA.ID = b.ID),0)
Cross Apply
答案 1 :(得分:1)
如果您担心不匹配的值,那么最好的解决方案是使用FROM
子句:
UPDATE a
SET Amount = a.Amount + b.SumInterest
FROM TableA a JOIN
(SELECT SUM(b.interest) as SumInterest
FROM TableB b
GROUP BY b.id
) b
ON a.id = b.id;