目录
3、where,group by,having,order by执行顺序和编写顺序
【二】使用having字句对分组后的结果进行筛选,语法和where差不多:having 条件表达式
【三】当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序:
1、round函数
sql中round函数的用法:在sql中能够使用round函数用把数值字段舍入为指定的小数位数,
在SELECT语句中使用,使用语法为“SELECT ROUND(column_name,decimals) FROM table_name;”,这里column_name是指“要舍入的字段”,decimals是指“规定要返回的小数位数”。
2、什么时候用having 不用where
因为 where 的操作对象是一条记录,比如说当一条记录xxx时,在什么条件下可以用 where
但是涉及到多条记录时,比如说这里的对象是从一组一组中再过滤到"平均问问题书小于 5" 的小组这种情况下,where 就不适用了
此时,提供了 having 的关键词。
where 从记录中法过滤出某一条记录
having 可以从一组组记录中过滤掉其哪几组
3、where,group by,having,order by执行顺序和编写顺序
【一】数据分组(group by ):
1.group by 和where
select 列a,聚合函数(聚合函数规范) from 表明 where 过滤条件 group by 列a
2.group by 和having
select 列a,聚合函数(聚合函数规范) from 表明 group by 列a having 过滤条件 ;
3.group by 和order by
select 列a,聚合函数(聚合函数规范) from 表明 group by 列a order by 条件;
【二】使用having字句对分组后的结果进行筛选,语法和where差不多:having 条件表达式
需要注意having和where的用法区别: 1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。 2.where肯定在group by 之前,即也在having之前。 3.where后的条件表达式里不允许使用聚合函数,而having可以。 4.having后只能跟group by后边字段条件 或者 非group by字段的聚合函数条件(按组查询);
【三】当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序:
Group By 和 Having, Where ,Order by这些关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。
SELECT的语法顺序就是起执行顺序
FROM WHERE (先过滤单表/视图/结果集,再JOIN) GROUP BY HAVING (WHERE过滤的是行,HAVING过滤的是组,所以在GROUP之后) ORDER BY
4、union
union联合的结果集不会有重复值,如果要有重复值,则使用union all
union会自动压缩多个结果集合中重复的结果,使结果不会有重复行,union all 会将所有的结果共全部显示出来,不管是不是重复。
union:会对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序。
union all:对两个结果集进行并集操作,包括重复行,不会对结果进行排序。