码迷,mamicode.com
首页 > 数据库 > 详细

sql篇 select from where group by having order by

时间:2016-08-13 00:01:18      阅读:578      评论:0      收藏:0      [点我收藏+]

标签:


       以前,自己总是记不住如何用group by,如何用order by,什么时候用group by,什么时候用order by,什么时候两者一起用,怎么用,谁先谁后,现在,我们就一起来说一下Select   from   where   groupby   having   order by 的那些事,简单的总结一下,加深一下自己的印象,也给有需要的人提供点资源

      Select   from   where   groupby   having   order by ,不用说,select from肯定是一起的,然后是where,然后是group by,having的前提是先分组,所以跟着group by,来的是分组之后的筛选条件。最后是从艺的数据集中select 字段,最最后,对已得的数据进行排序


所以执行顺序依次是:

Where
Group by
Having   <span style="font-family: Arial, Helvetica, sans-serif;">Select    Order by</span>

1.执行where xx对全表数据做筛选,返回第1个结果集。 

2.针对第1个结果集使用group by分组,返回第2个结果集。 
3.针对第2个结集执行having xx进行筛选,返回第3个结果集。
4针对第3个结果集中的每1组数据执行select xx,有几组就执行几次,返回第4个结果集。 
5.针对第4个结果集排序       其实说起来,我们的sql语句主要就是这几个加上一些聚合函数,嵌套用法什么的,在有一些什么case when语句,下面来个更形象的图文并茂

数据源:

           技术分享

 

先来一个比较另类的、简单的,组内排序

Select StudentName,LessonName,Result  from TestTable order byStudentName,LessonName,Result

     技术分享

       先执行Select StudentName,LessonName,Result from TestTable,然后根据StudentName排序,在此基础上再根据LessonName排序,在以上基础上再根据Result进行升序排序

 

another:

 select StudentName,SUM(Result) asResultField from TestTable where LessonName='语文' GROUP BYStudentName HAVING SUM(Result)>7 ORDER BY ResultField
       技术分享

       他的执行顺序是先执行筛选出LessonName=’语文’的,根据StudentName进行分组,在以分组基础上筛选Result之和大于7的数据,然后就是从已得数据集中select StudentName,SUM(Result) as ResultField,然后最后数据集根据总分大小升序排列

 

这里面呢,其他的都挺简单,值得注意的是group by的用法:

select 列a,聚合函数(聚合函数规范) from 表明 where 过滤条件 group by 列a ;
select 列a,列b 聚合函数(聚合函数规范) from 表明 where 过滤条件 group by 列a , 列b

也就是说,我们从select里面展示的字段都是要用来分组的依据,如果是:

select 列a,列b 聚合函数(聚合函数规范) from 表明 where 过滤条件 group by 列a 


技术分享

重:下面说一下having和where的用法区别: 
        1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。 
        2.where肯定在group by 之前,即也在having之前。 
        3.where后的条件表达式里不允许使用聚合函数,而having可以。



sql篇 select from where group by having order by

标签:

原文地址:http://blog.csdn.net/liweizhong193516/article/details/52192283

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!