关于UPDATE的SQL语法问题。通过以下示例提出问题要容易得多:
**Payments Table**
ID user_id payment_due payment_made
1 3 10.0 5.0
1 3 10.0 10.0
1 9 20.0 20.0
**Balance Table**
ID user_id current_balance
1 3 ???
2 9 ???
假设我想更新特定用户的当前余额。添加所有付款会费并从特定用户的所有付款中减去它的正确有效的SQL语法是什么?
在这种情况下,用户'3'的current_balance是5.0,而用户'9'的current_balance是0.0
答案 0 :(得分:2)
怎么样:
select
ID,
user_id,
(sum(payment_due) - sum(payment_made)) current_balance
from
PaymentsTable
group by
ID,
user_id
答案 1 :(得分:2)
要更新您的表格,请使用子查询:
UPDATE Balance_Table b
SET current_balance =
( SELECT SUM( payment_due - payment_made )
FROM Payments_Table p
WHERE p.user_id = b.user_id
)
考虑更新方法。 Balance_Table
更改后Payments_Table
将不再同步,因此您可能最好从实际中选择数据。
答案 2 :(得分:1)
您需要使用子查询。这样的事情应该有效:
UPDATE
balance_table b
SET
current_balance = (SELECT
SUM(payment_due - payment_made)
FROM
payments_table p
WHERE
p.user_id = b.user_id)