Mysql错误1093 - 无法在FROM子句中指定更新目标表 - 在同一个表中更新列

时间:2014-07-24 01:32:39

标签: mysql

我知道这里有很多主题,但我无法弄清楚应该如何重写我的查询以使其工作:( 在这里我的查询。它应该从其他表中获取货币汇率并计算成本

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

请帮帮我这个

2 个答案:

答案 0 :(得分:1)

您无法在同一张桌子中进行选择和更新,因为它已被锁定,请使用上面的示例或使用

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

答案 1 :(得分: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
           );