SQL 根据单独 table 中的条件更新 table

SQL Update table based on conditions in separate table

我有两个 table,每个都包含数千条已支付或欠下的保证金记录。格式是这样的:

Table A
ID   ID2    ID3   Payment
1    REG    P     102.5
2    REG          120
3    REG    P     65.5

Table B
ID     Payment
1      17.5
2      0
3      45.5

其中 Table A 显示已支付的金额,table B 显示仍到期的金额。我想更新 table B,以便在保证金未全额付清时显示收取的总金额。例如,对于 ID 1,我想将 B.Payment 更新为等于 A.Payment+B.Payment 但我不想更新 ID 2,因为这笔押金已经支付在全。我尝试使用以下代码,但它更新了我的 table 中的每一行,而不仅仅是部分付款的行:

UPDATE B 
SET B.[Payment] = (A.[Payment] + B.[Payment]) 
FROM B LEFT JOIN A ON A.[ID] = B.[ID] 
WHERE A.[ID2] = 'REG' and A.[ID3] = 'P' 

如何在满足 table A 中的条件时仅更新 table B 中的字段?

我不确定 b.id2 在您的代码中指的是什么。

试试这个

UPDATE b
SET b.payment = b.payment +
                (SELECT a.payment FROM a WHERE a.id=b.id AND a.id2='REG')
WHERE b.payment<>0;

试试这个:

UPDATE b SET b.Payment = b.Payment + a.Payment
FROM B b 
    JOIN (SELECT a.ID, Payment = sum(Payment) FROM A a 
          WHERE a.ID2 = 'REG' AND a.ID3 = 'P'
          GROUP BY a.ID) a ON b.ID = a.ID

它将每个 ID 在 table A 中的所有付款相加,然后将其添加到 table B 中的付款列。