sql篇 select from where group by having order by
以前,自己总是记不住如何用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 字段,最最后,对已得的数据进行排序
所以执行顺序依次是:
- from
 - Where
 - Group by
 - Having
 - Select
 - Order by
 
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,然后根据StudentName排序,在此基础上再根据LessonName排序,在以上基础上再根据Result进行升序排序
another:
       他的执行顺序是先执行筛选出LessonName=’语文’的,根据StudentName进行分组,在以分组基础上筛选Result之和大于7的数据,然后就是从已得数据集中select StudentName,SUM(Result) as ResultField,然后最后数据集根据总分大小升序排列
这里面呢,其他的都挺简单,值得注意的是group by的用法:
select 列a,列b 聚合函数(聚合函数规范) from 表明 where 过滤条件 group by 列a , 列b
也就是说,我们从select里面展示的字段都是要用来分组的依据,如果是:
重:下面说一下having和where的用法区别:
1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。
2.where肯定在group by 之前,即也在having之前。
3.where后的条件表达式里不允许使用聚合函数,而having可以。
sql篇 select from where group by having order by的更多相关文章
- 转:sql篇 select from where group by having order by
		
原文地址: sql篇 select from where group by having order by select from where group by having order by 的基 ...
 - 查询语句中select from where group by having order by的执行顺序
		
查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--w ...
 - Oracle SQL篇(四)group by 分组与分组的加强 rollup
		
分组操作group by 和分组的强化(rollup) 分组操作和分组函数的使用,对于编写SQL语句的人来说,是最基本的概念. 我们来看下面的例子: 在这里我们使用员工表EMP scott@D ...
 - 查询语句中 select from where group by having order by 的执行顺序
		
查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 其中 select 和 from 是必须的,其他关 ...
 - sql语句select group by order by where一般先后顺序   转载
		
写的顺序:select ... from... where.... group by... having... order by..执行顺序:from... where...group by... h ...
 - sql语句select group by order by where一般先后顺序
		
写的顺序:select ... from... where.... group by... having... order by..执行顺序:from... where...group by... h ...
 - 对于group by  和 order by 并用 的分析
		
今天朋友问我一个sql查询. 需求是 找到idapi最近那条数据,说明idapi 是重复的,于是就简单的写了 SELECT * FROM `ag_alarm_history` group by ` ...
 - mysql中group by和order by混用 结果不是理想结果(转)
		
文章转自 https://www.cnblogs.com/myphper/p/3767572.html 在使用mysql排序的时候会想到按照降序分组来获得一组数据,而使用order by往往得到的不是 ...
 - mysql中group by和order by混用 结果不是理想结果
		
在使用mysql排序的时候会想到按照降序分组来获得一组数据,而使用order by往往得到的不是理想中的结果,那么怎么才能使用group by 和order by得到理想中的数据结果呢? 例如 有一个 ...
 
随机推荐
- Java for LeetCode 234 Palindrome Linked List
			
解题思路: O(1)的空间复杂度,意味着不能通过开一个List来解决问题.我们可以把List分成前后两个部分,后半部分通过指针的相互赋值进行翻转即可. JAVA实现如下: public static ...
 - yii框架详解 之 CActiveRecord
			
[特别注意事项] 1.所有要用于访问的属性,都要先在类中声明(原数据表中的字段是默认可访问的,自定义的属性值,一定要先在类中添加声明,才可以正常访问) 2.数据库的表面引用,一般都是有固定的数据库表前 ...
 - Python字符编码
			
http://www.runoob.com/python/python-strings.html ASCII Unicode UTF-8 # -*- coding: utf-8 -*- 格式化 %运算 ...
 - windows下Emacs的安装与配置
			
1.下载 到这个网址可以下载到Emacs的windows版本:http://ftp.gnu.org/pub/gnu/emacs/windows/ 只需要一个压缩文档,如emacs-23.2-bin-i ...
 - WCF错误:413 Request Entity Too Large
			
在我们用WCF传输数据的时候,如果启用默认配置,传输的数据量过大,经常会出这个错误. WCF包含服务端与客户端,所以这个错误可能出现在服务端返回数据给客户端,或客户端传数据给服务端时. 1. 服务端返 ...
 - JS点击灯泡变亮(学自W3school)
			
JS学习笔记1(学自W3school) function changeImage() { element = document.getElementByIdx_x('myimage' ...
 - 【python】解压文件
			
参考:http://essen.iteye.com/blog/1941489 tarfile模块 具体使用方法: https://docs.python.org/2/library/tarfile.h ...
 - LeetCode 242 Valid Anagram
			
Problem: Given two strings s and t, write a function to determine if t is an anagram of s. For examp ...
 - php字符串处理函数相关操作
			
<?php//获取tech和98426这两个字符串
 - 好用的php类库和方法
			
1, /** * 将一个平面的二维数组按照指定的字段转换为树状结构 * * 用法: * @code php * $rows = array( * array('id' => 1, 'value' ...