gpt4 book ai didi

mysql - 如何根据 mysql 表中的其他 2 列设置列值?

转载 作者:行者123 更新时间:2023-11-29 01:35:33 24 4
gpt4 key购买 nike

在 mySql 中,我试图根据同一个表的其他 2 列的值来设置列的值 (total)。

http://sqlfiddle.com/#!9/e9c27a/1

CREATE TABLE IF NOT EXISTS `order_total` (
`order_total_id` int(10) NOT NULL AUTO_INCREMENT,
`order_id` int(11) NOT NULL,
`code` varchar(32) NOT NULL,
`title` varchar(255) NOT NULL,
`value` decimal(15,4) NOT NULL DEFAULT '0.0000',
`sort_order` int(3) NOT NULL,
PRIMARY KEY (`order_total_id`),
KEY `order_id` (`order_id`)
) ENGINE=MyISAM AUTO_INCREMENT=244 DEFAULT CHARSET=utf8;

INSERT INTO `order_total` (`order_total_id`, `order_id`, `code`, `title`, `value`, `sort_order`) VALUES
(241, 80, 'sub_total', 'Sub-Total', '400.0000', 1),
(242, 80, 'shipping', 'Free Shipping', '10.0000', 3),
(243, 80, 'total', 'Total', '0', 9);

我尝试了这样一个在本地 mySql 中工作的代码,但我想也许有更好的方法来做到这一点。

UPDATE order_total ot 
INNER JOIN (
SELECT order_id, value
FROM order_total
WHERE code = 'sub_total'
GROUP BY order_id
) o ON ot.order_id = o.order_id
INNER JOIN (
SELECT order_id, value
FROM order_total
WHERE code = 'shipping'
GROUP BY order_id
) o2 ON ot.order_id = o2.order_id
SET ot.value = o.value + o2.value
WHERE ot.code = 'total' AND ot.order_id = 80

如何做更有效率?

最佳答案

您可以使用一个查询来计算总数,如下所示:

update order_total ot 
INNER JOIN (
SELECT order_id, sum(value) value
FROM order_total
WHERE code = 'sub_total' or code= 'shipping'
GROUP BY order_id
) o ON ot.order_id = o.order_id
SET ot.value = o.value
WHERE ot.code = 'total' AND ot.order_id = 80;

关于mysql - 如何根据 mysql 表中的其他 2 列设置列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47939422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com