2013-05-02 59 views
-1

我试图更新表基于2选择子查询将被multipied产生的价格列乘在更新子查询中选择

这里的价值是我的代码:

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

Downvoter你能解释一下你自己吗? – 2013-05-02 14:24:03

回答

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

试试这个:

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