Order by,Having,Group by,limit区别
1.ORDER BY
排序方式,默认的为升序。order by 后面必须列出排序的字段名,可以是多个字段名
order by是按指定的列的升序或降序来给查询结果排序, 它不需要查询结果中出现order by的栏位. 更改Order by里的栏位只会影响查询结果的顺序,而不影响查询出的记录总数,和每条记录的内容.
2.GROUP BY
就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。目的就是要将数据分类汇总。
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面
注:聚合函数为sum()、count()、avg()等
group by是按指定的列对满足Where条件的所有记录分组,并对组内的一些数值型栏位计算出每组的一个统计指标,如求和、求个数、求平均值、求最大值、求最小值。 它对查询结果有个要求:查询结果中的出现的栏位必须是Group by中栏位的子集。 更改Group by里栏位的顺序不会对查询结果有任何影响; 但是更改Group by的栏位,会对查询得到的记录数量,以及各个汇总函数的结果造成影响。
在sql命令格式使用的先后顺序上,group by 先于 order by。
EG:SELECT Sno,AVG(Grade) FORM SC GROUP BY Sno
3.HAVING
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
注意:当元组含有空值时,(1)空值在任何聚集操作中被忽视。,它对求和、求平均值和计数都没有影响,也不能是某列的最大值或最小值。(2)NULL值又可以在分组属性中看作是一个一般的值。
HAVING子句在SELECT查询中的位置:
1 SELECT 2 FROM 3 WHERE 4 GROUP BY 5 HAVING 6 ORDER BY