我有 2 个表,orders 和 order_detail。
订单
id_order | currency | conversion_rate
--------------------------------------------
1 1 1
2 1 1
3 7 8.523856
4 1 1
5 1 1
6 7 8.457893
7 1 1
ORDER_DETAIL
id_order | id_order_detail | price
--------------------------------------------
1 1 100
1 2 150
2 3 150
3 4 2500
3 5 2100
4 6 160
5 7 190
6 8 2300
6 9 1500
7 10 125
我需要将 order_detail 表
中的所有 prices
与来自 orders 表的 conversion_rate
以及相应的 order_id
其中货币不为 1 且费率不为 1(基本上将所有订单转换为默认货币,1)。
所以期望的结果是:
ORDER_DETAIL
id_order | id_order_detail | price
--------------------------------------------
1 1 100
1 2 150
2 3 150
3 4 293.29449
3 5 246.367371
4 6 160
5 7 190
6 8 271.93533
6 9 177.349134
7 10 125
我做了一个查询:
UPDATE order_detail
SET price = price/orders.conversion_rate
WHERE orders.id_order = order_detail.id_order
AND orders.conversion_rate != 1
AND orders.currency != 1;
我现在被困在这里,因为它给出了关于未知列 orders.conversion_rate 的错误,尽管它就在那里。
请帮我完成这个查询。
最佳答案
您在查询中缺少关联两个表,因此您无法从订单表中获取数据。我在 INNER JOIN 查询中使用了 LEFT JOIN
来更新您的 orders_detail 表
UPDATE order_detail a
LEFT JOIN orders b
ON a.id_order = b.id_order
SET a.price = a.price/b.conversion_rate
WHERE a.id_order = b.id_order AND b.conversion_rate != 1 AND b.currency != 1;
关于MySQL 将价格除以另一个表中的货币汇率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16633486/