2014-07-24 60 views
-1

我知道有很多這方面的主題,但我無法弄清楚應該如何重寫我的查詢以使其生效工作:( 這裏我的查詢,這只是應該從其他表匯率和計算成本Mysql錯誤1093 - 不能在FROM子句中指定目標表進行更新 - 在同一表中更新列

update site_s_client_base_price 
SET calculated_price_in_base_currency = 
SELECT (site_s_currencies.rate * site_s_client_base_price.supplier_price) from 
site_s_currencies, site_s_client_base_price 
WHERE site_s_currencies.currency_id=site_s_client_base_price.currency_id 

請幫我這個

回答

0

在你的情況,你可以通過固定子查詢解決這個問題。你不需要在內部from子句中提及外部表。你想要一個相關的子查詢:

update site_s_client_base_price bp 
    SET calculated_price_in_base_currency = 
      (SELECT c.rate * bp.supplier_price 
      FROM site_s_currencies c 
      WHERE c.currency_id = bp.currency_id 
      ); 
+0

好了,現在它不抱怨,但不設置也很有價值。始終爲0受影響的行 – sergeda

+0

當沒有值更改時,MySQL報告「0受影響的行」。也許這些值已經被正確更新了。 –

+0

是的@Gordon Linoff這是我的錯誤。感謝您的幫助。不能投票如此:( – sergeda

1

不能seletc並在同一個表的更新,因爲它是鎖着的,用上面的例子中,或使用

Update TABLE1 t1 set FIELD1= (select field1 from TABLE1 t2 where .....) 
+0

請問您能否更詳細地解釋一下?我不會嘗試更新我選擇的相同值。我想從一列中取值,將它乘以另一個表中的值並將值存入另一列這張表的列號 – sergeda

+0

它的概念是相同的,你不能同時在一個表上執行選擇和更新,你必須創建一個臨時表來做到這一點 – Bourkadi

+0

謝謝你的信息 – sergeda

相關問題