乘以更新子查询选择

时间:2013-05-02 14:18:45

标签: mysql

我正在尝试更新基于2个选择子查询的表,该子查询将被乘以生成Harga列的值

这是我的代码:

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

2 个答案:

答案 0 :(得分:3)

您只需使用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'

请先执行备份,然后再执行语句。

答案 1 :(得分:1)

试试这个:

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