【发布时间】:2017-04-26 05:58:21
【问题描述】:
我有 2 个具有以下结构的表。
Accounts (acc_id, name, balance)
GeneralLedger GL (account_id, voucher_id, debit,credit)
我想通过计算总帐表中的总借方和总贷方来更新帐户表中的帐户余额。
我尝试了下面的查询但它不起作用,没有错误但没有更新任何记录
UPDATE accounts a
INNER JOIN
(
SELECT gl.account_id, SUM(gl.debit) total_debit, SUM(gl.credit) total_credit
FROM general_ledger gl
WHERE gl.voucher_id=1
GROUP BY gl.account_id
) gl ON gl.account_id=a.account_id
SET a.balance = a.balance + (total_credit-total_debit)
WHERE a.acc_id=gl.account_id
【问题讨论】:
-
在什么情况下它不起作用?您是否收到语法错误或未给出预期结果?
-
不要认为你需要最后一个 WHERE 子句,因为链接已经在子选择中定义。
-
@P.Salmon,查询正常,错误为 0,但没有更新任何记录
标签: mysql