我需要根据数据库表中某些匹配的列值来找到特定列的总和。
请检查我使用的mysql表:
CREATE TABLE IF NOT EXISTS `plant_production_items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`plant_production_id` int(11) NOT NULL,
`materialid` int(11) NOT NULL,
`packaging_id` int(11) NOT NULL,
`grade_id` int(11) NOT NULL,
`slabs` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `material_purchase_id` (`plant_production_id`),
KEY `grade_id` (`grade_id`),
KEY `packaging_id` (`packaging_id`),
KEY `slabs` (`slabs`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=104 ;
值如下:
INSERT INTO `plant_production_items` (`id`, `plant_production_id`, `materialid`, `packaging_id`, `grade_id`, `slabs`) VALUES
(5, 4, 22, 85, 29, 4444),
(6, 5, 22, 14, 25, 3234),
(8, 6, 27, 21, 60, 4444),
(11, 8, 22, 85, 29, 44444),
(19, 7, 22, 84, 29, 434),
(75, 10, 26, 0, 51, 1233),
(76, 10, 24, 17, 34, 251),
(78, 10, 26, 0, 46, 3234),
(91, 9, 27, 21, 57, 1000),
(92, 9, 27, 21, 57, 2000),
(93, 3, 23, 16, 32, 5000),
(94, 3, 27, 21, 54, 3233),
(101, 3, 27, 21, 0, 700),
(103, 3, 29, 27, 0, 6666);
我希望根据以下各列中的唯一值获得“平板”各列的总和:
plant_production_id
materialid
packaging_id
grade_id
简而言之,我们需要找到上述所有4个值的组合,并需要显示“ slabs”列的总和。
例如:
有两个相同的记录:
(91, 9, 27, 21, 57, 1000),
(92, 9, 27, 21, 57, 2000),
所以在这里我想得到总金额,即 1000 + 2000 = 3000
输出应该是所有带有总平板的列。不需要我们匹配所有以上4列。实际上,我们需要根据与以上4列相同的总记录找到所有总平板。
如果仍然不清楚,请告诉我。
答案 0 :(得分:1)
您可以这样使用 GROUP BY :
SELECT
plant_production_id,
materialidm,
packaging_id,
grade_id,
SUM(`slabs`) slabs_sum
FROM plant_production_items
GROUP BY plant_production_id, materialidm, packaging_id, grade_id;
因此,它为行分组的列具有相同值的行的slabs
之和。