Mysql 在更新子查询选择中乘法

Mysql 在更新子查询选择中乘法,mysql,Mysql,我正在尝试更新一个基于2个select子查询的表,该子查询将被多次使用以生成列的值 这是我的密码: UPDATE bahanmakanan SET Harga = (SELECT HargaSatuan from detail_bahanmakanan WHERE IDBahanMakanan = "BM01")* (SELECT jumlah from bahanmakanan WHERE IDBahanMakanan = "BM01") WHERE IDBahanMa

我正在尝试更新一个基于2个select子查询的表,该子查询将被多次使用以生成列的值

这是我的密码:

UPDATE bahanmakanan 
SET Harga = (SELECT HargaSatuan from detail_bahanmakanan 
    WHERE IDBahanMakanan = "BM01")* (SELECT jumlah from bahanmakanan 
    WHERE IDBahanMakanan = "BM01")

WHERE IDBahanMakanan = "BM01" ;
返回错误消息

Error Code: 1093. You can't specify target table 'bahanmakanan' for update in FROM clause

您只需使用
JOIN

UPDATE  bahanmakanan a
        INNER JOIN detail_bahanmakanan b
            ON a.IDBahanMakanan = b.IDBahanMakanan 
SET     a.Harga = a.jumlah * b.HargaSatuan 
WHERE   a.IDBahanMakanan  = 'BM01'
请在执行该语句之前先备份数据库。

尝试以下操作:

UPDATE bahanmakanan as t1
JOIN detail_bahanmakanan as t2 USING(IDBahanMakanan)
SET t1.Harga = t2.HargaSatuan * t1.jumlah
WHERE IDBahanMakanan = "BM01";

你能解释一下吗?