一、select查询
SELECT [ALL|DISTINCT] <目标表达式>....
FROM <表名或者视图名>..
[WHERE <条件表达式>]
[GROUP BY <列名 1> [HAVING] <条件表达式>]
[ORDER BY <列名 2> [ASC|DESC]]
1.对于group by:
主要是用来通过对某个字段进行分组查询。
例如数据:
执行下列语句:
SELECT Ssex,COUNT(Ssex) FROM `student` GROUP BY Ssex;
对性别进行分组查询,结果如下:
2.对于having
一开始以为是分组之前进行条件筛选,入了个坑。它和where关键字有个区别是where是group by之前进行条件筛选,而having是group by之后进行条件筛选,还有where后的条件表达式里不允许使用聚合函数,而having可以。
例如:
A.测试where
SELECT Ssex,COUNT(Ssex) FROM `student` WHERE Sage>17 GROUP BY Ssex;
表示group by之前筛选年龄大于17岁的人。结果为:
B.测试having
首先我先统计男女的各自总人数:
SELECT Ssex,COUNT(Ssex) FROM `student` GROUP BY Ssex;
则各自人数为:
然后我再测试以having条件方式,我测试的条件为 group by 之后数量大于6的Ssex:
SELECT Ssex,COUNT(Ssex) FROM `student` GROUP BY Ssex HAVING COUNT(Ssex)>6;
结果为: