SQL 排序

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
原文地址:https://www.cnblogs.com/jiliangqian/p/8847278.html