无法将 table 中的值更新为 mysql 中的另一个 table

Unable to update values from one table to another table in mysql

分类帐Table

ledger_id   ledger_name dep_id  dr_bal   cr_bal
   1          Purchase     2     NUll     NUll

交易Table

trans_id    trans_date  ledger_id   ledger_name    amount   trans_type
1            3/2/2004      1        Purchase A/C    84500   dr
2            3/12/2004     6         Cash A/C       20000   cr 

这些是我的 table、LedgersTransactions。 我想从 transactions.amount 更新 ledgers.dr_bal, 基于 ledger_id,即 ledgers table 中的 primary key

想要根据 trans_type ='dr'

将值从 transactions.amount 复制到 dr_bal

到目前为止我已经尝试过,

UPDATE ledgers
SET dr_bal =(select sum(If(tbl_transactions.trans_type = 'dr' AND transactions.ledger_id = 1), amount,0) FROM transactions)
where ledgers.ledger_id =1;

但是我无法 运行 上面的查询,因为它在末尾的 Where 子句处抛出错误。

已尝试在此处调查与更新 table 相关的各种问题。但是我真的卡住了。

试试这个查询!

UPDATE ledgers
        LEFT JOIN
    (SELECT 
        SUM(amount) soa, ledger_id
    FROM
        tbl_transactions
    WHERE
        tbl_transactions.trans_type = 'dr'
            AND tbl_transactions.ledger_id = 1) t ON (ledgers.ledger_id = t.ledger_id) 
SET 
    ledgers.dr_bal = coalesce(t.soa, 0);

如果您想用交易金额更新所有分类帐,请删除条件 tbl_transactions.ledger_id = 1 并在子查询中引入 GROUP BY tbl_transactions.ledger_id