如何将两个表指定列相乘结果存入订单详情表的总价格列
解决方案
你需要使用UPDATE语句关联两张表完成批量更新,不同数据库的语法略有区别,以下是主流数据库的实现方式:
MySQL 写法
UPDATE t_order_details b INNER JOIN t_product a ON a.product_name = b.t_product_product_name SET b.订单总价格字段 = a.product_unit_price * b.order_quantity;
请将代码中的订单总价格字段替换为t_order_details表中存储订单总价格的实际字段名。
PostgreSQL 写法
UPDATE t_order_details b SET 订单总价格字段 = a.product_unit_price * b.order_quantity FROM t_product a WHERE a.product_name = b.t_product_product_name;
SQL Server 写法
UPDATE b SET b.订单总价格字段 = a.product_unit_price * b.order_quantity FROM t_order_details b INNER JOIN t_product a ON a.product_name = b.t_product_product_name;
注意事项
- 执行更新操作前建议先执行查询验证匹配结果和计算值是否正确,避免误改数据:
SELECT b.t_product_product_name, b.order_quantity, a.product_unit_price, a.product_unit_price * b.order_quantity AS 计算总价格, b.订单总价格字段 AS 原有总价格 FROM t_order_details b JOIN t_product a ON a.product_name = b.t_product_product_name; - 操作生产环境数据时建议先开启事务,验证更新结果正确后再提交,出错可回滚,以MySQL为例:
BEGIN; -- 执行UPDATE更新语句 UPDATE t_order_details b INNER JOIN t_product a ON a.product_name = b.t_product_product_name SET b.订单总价格字段 = a.product_unit_price * b.order_quantity; -- 验证结果无误执行COMMIT提交,出错执行ROLLBACK回滚 -- COMMIT; -- ROLLBACK;
内容的提问来源于stack exchange,提问作者Longstride83
相关产品推荐
相关产品推荐

