我正在尝试更新基于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
答案 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";