2013-10-09 34 views
0

我想通過將quantity列乘以cost列來更新表中的total列,即quantity列。MySQL - 多個2列,在同一表格內更新

UPDATE `tbl_orders` SET 
    total = (SELECT quantity * cost AS n1 FROM `tbl_orders` WHERE orderid = 167 LIMIT 1) 
WHERE orderid= 167 LIMIT 1 

我以前做過的子查詢更新,但返回的MySQL錯誤是:

您不能指定目標表 'tbl_orders' 的更新在 FROM子句

任何人都可以看到我做錯了什麼?

回答

1

JOIN它改爲。

UPDATE tbl_orders a 
     INNER JOIN 
     (
      SELECT orderid, quantity * cost totalCost 
      FROM tbl_orders 
      WHERE orderid = 167 
     ) b ON a.orderid = b.orderid 
SET  a.total = b.totalCost 
WHERE a.orderid = 167 

如果要更新所有orderid,刪除所有WHERE條款。