mySql에서 같은 테이블의 다른 두 열의 값을 기준으로 열 (total
)의 값을 설정하려고합니다. mysql 테이블의 다른 두 열을 기반으로 col val을 설정하는 방법은 무엇입니까?
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);
http://sqlfiddle.com/#!9/e9c27a/1
나는 현지 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
어떻게 효율적으로 할 수 있습니까?
당신의 대답은 또한 아주 좋고 완벽합니다. 고마워. 어느 것이 당신의 마음에 더 효율적입니까? – Kardo
이것은 복잡성이 적기 때문에 더 나은 대답입니다. IMHO –
이전 답변을 이미 정확하게 표시했습니다! 나는 지금 무엇을해야합니까!? : - | – Kardo