GROUP BY子句通常和聚集函数一起使用,用来对结果集进行分组,需要注意的是在查询的字段中只能出现用来分组的字段或聚集函数字段(聚集函数字段可以有多个)。
首先我们建立一张student表,表结构如下所示:
| student | CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`xuefei` int(10) DEFAULT NULL,
`hongbao` int(10) DEFAULT NULL,
`school` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
添加如下数据:
+----+--------+---------+---------+
| id | xuefei | hongbao | school |
+----+--------+---------+---------+
| 1 | 10 | 11 | 一中 |
| 2 | 20 | 21 | 一中 |
| 3 | 20 | 21 | 二中 |
| 4 | 10 | 11 | 二中 |
+----+--------+---------+---------+
执行如下SQL:
SELECT school, sum(xuefei) as sum_of_xuefei, sum(hongbao) as sum_of_hongbao FROM student group by school;
返回:
+---------+---------------+----------------+
| school | sum_of_xuefei | sum_of_hongbao |
+---------+---------------+----------------+
| 一中 | 30 | 32 |
| 二中 | 30 | 32 |
+---------+---------------+----------------+
如果在查询字段中出现了非上面的两种字段会报错,原因就是其它字段的值会出现冲突。