我有两个表,每个表都包含数千条已支付或欠付保证金的记录。格式如下:基于独立表中条件的SQL更新表
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
其中表A显示已支付的金额,表B显示仍应付的金额。我想更新表B,以便任何时候没有支付保证金时,我会显示收取的总金额。例如,对于ID 1,我想更新B.Payment等于A.Payment + B.Payment,但我不想更新ID 2,因为这笔存款已经全额支付。我试着用下面的代码,但它在我的表与部分付款更新每一行,而不是仅仅行:
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'
如何在表格中的条件都满足时,我只更新表B中的字段?
为什么你想要这样做吗?除非您创建触发器来保持表格更新,否则您将保留旧数据值。最好创建一个'View' –
你的RDBMS是什么?不同的数据库有不同的'UPDATE JOIN' sintaxis –
胡安卡洛斯 - 这是一个单一的更新,在此更新运行后,将以新格式添加数据而不是旧格式 – mdarr