0

我正在尝试使用 sales_orders 中的 applied_discount 字段计算来更新 sales_order_parts 详细信息表中的 unit_price。此外,价格在 master_part_list 表中作为价格。当我从 select 语句向下运行时,它运行良好并返回 order_number 209 中的值列表,计算正确。当我从更新行完整运行它时,它返回“错误代码:1093。您不能在 FROM 子句中指定目标表'sop'进行更新”有什么想法吗?

update sales_order_parts as sop
    set unit_price =
    (select (master_part_list.price * (1-(so.applied_discount/100)))
    from sales_orders as so
        inner join sales_order_parts as sop2 
            on so.id = sop2.order_id
        inner join master_part_list 
            on sop2.part_id = master_part_list.id
        where so.order_number = 209);

4

2 回答 2

0

使用 sales_order_parts 的子查询。mysql 然后将其视为新的临时表

喜欢

update sales_order_parts as sop
    set unit_price =
    (select (master_part_list.price * (1-(so.applied_discount/100)))
    from sales_orders as so
        inner join (SELECT * FROM sales_order_parts) as sop2 
            on so.id = sop2.order_id
        inner join master_part_list 
            on sop2.part_id = master_part_list.id
        where so.order_number = 209);
于 2020-02-19T18:32:08.207 回答
0

您可以尝试使用没有子查询的连接

update sales_order_parts as sop
INNER JOIN sales_orders as so on so.id = sop.order_id
  AND so.order_number = 209 
inner join master_part_list on sop.part_id = master_part_list.id
SET sop.unit_price = master_part_list.price * (1-(so.applied_discount/100))
于 2020-02-19T18:36:01.420 回答