百度知道:
1.order by是 按字段进行排序.. 字段后面可跟desc降序..asc升序..默认为升序
2.group by是进行分组查询
3.having和where都属于条件过滤
区别在于一般having是和group by连用... group by...having... 表示先分组再条件过滤
而如果在group by前面有where,则是表示先条件过滤再分组
这个在实际中特殊的查询会影响到查询结果。
PS: 这几条关键字是有先后顺序的,where...group by...having...order by 都是可选,但是如果全部写出来,必须是这个顺序。
================================
言归正传!

一、Where

select * from tableName where id="2012";


就是查找tableName中,id=2012的记录。


这里的where对查询的结果进行了筛选。只有满足where子句中条件的记录才会被查询出来。

二、Group By


根据上表,需求:求出Apple在China,Japan,USA的平均价格,你怎么办?


可以这么做:select avg(price) from tablename where fruitname="apple";


Group By 一般是和一些聚合函数一起使用,比如上面我们用到的求平均的函数avg,还有求和sum,求个数count,求最大max,求最小min。


对于上表,求每种水果的最大的价格:select fruitname,productplace,max(price) from tablename group by fruitname


Group By 还有一个重要的合作对象,就是having。


三、Having


用Group By 进行分组后,如何对分组后的结果进行筛选呢?having可解决这个难题。


1.首先看一个例子:求平均价格在3.0以上的水果


如果使用:


select fruitname,avg(price) from tablename where avg(price)>=3.0 group by fruitname ;


这样能否达到我们的要求呢?


答案是否定的,因为where子句不能使用聚合函数。为了解决这个问题,我们来用下我们的杀手锏,他就是Having;


改写如下:select fruitname,avg(price) from tablename group by fruitname having avg(price)>=3.0;


2.我们继续看Having的另外一个匪夷所思


select fruitname,avg(price) from tablename group by fruitname having price<2.0;


这个查询的结果你们觉得会是什么呢?


没错,就是 orange 0.8 ;只有这一条记录


为什么呢?为什么Apple没有被查到呢,因为apple的有的价格超出了2.0.


另外运算符in也可以用在having 子句。


select fruitname,avg(price) from tablename group by fruitname having fruitname in ("orange","apple");


四、Order By


Order By是对查询的结果进行一个再排序的过程,一般放在查询语句的最后,可以是单列,也可以实现多列的排序。


分为升序asc和降序desc,默认的为升序。


Order By单列的排序比较简单,多列的也不麻烦。


select * from tablename group by friutname order by fruitname asc,price desc.

 

SQL语句之order by 、group by、having、where的更多相关文章

  1. 基本SQL语句练习(order by,group by,having)

    一.GROUP BY 和ORDER BY 1.使用Order by 进行排序,默认升序ASC,降序则使用DESC;(还可以这样:order by 1表示按第一列排序:order by 2 desc表示 ...

  2. ysql常用sql语句(12)- group by 分组查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  3. 若sql语句中order by指定了多个字段,怎么排序?

    举个例子吧: order by id desc,time desc 先是按 id 降序排列 (优先)如果 id 字段 有些是一样的话 再按time 降序排列 (前提是满足id降序排列)

  4. sql语句中order by 多个字段同时排序的应用

    order  by 后面可以跟多个字段进行排序 用A1代表第一个字段,A2代表第二个字段 一.order by A1 , A2  desc   指的是用A1升序A2降序 二.order by A1 a ...

  5. sql 语句中 order by 的用法

    order by 是用在where条件之后,用来对查询结果进行排序 order by 字段名 asc/desc asc 表示升序(默认为asc,可以省略) desc表示降序 order by 无法用于 ...

  6. 【MySQL】若sql语句中order by指定了多个字段,则怎么排序?

    举个例子吧:order by id desc,time desc先是按 id 降序排列 (优先)如果 id 字段 有些是一样的话 再按time 降序排列 (前提是满足id降序排列)   order b ...

  7. [转]SQL语句:Group By总结

    1. Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”.它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若 ...

  8. SQL语句:Group By总结

    1. Group By 语句简介: Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)".它的作用是通过一定的规则将一个数据集划分成若干个 ...

  9. SQL语句之Group By

    1. Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”.它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若 ...

随机推荐

  1. iOS开发-UITextField手机号和邮箱验证

    不管是网页是手机,用户注册登录的时候绝大数时候都需要手机号码和邮箱地址,而且有些App会限制只能使用手机号注册,iOS方面邮箱正则比较简单,不过手机号码验证找了一下网上的,发现三大运营商的号码段有所变 ...

  2. 不能从const char *转换为LPCWSTR --VS经常碰到

    不能从const char *转换为LPCWSTR 在VC 6.0中编译成功的项目在VS2005 vs2005.vs2008.vs2010中常会出现类型错误. 经常出现的错误是:不能从const ch ...

  3. JPA(二):HellWord工程

    使用JPA持久化对象的操作步骤: 1)创建persistence.xml,在这个文件中配置持久化单元: --- 需要指定跟哪个数据库进行交互: --- 需要指定JPA使用哪个持久化的框架以及配置该框架 ...

  4. (转)Unity3D中脚本的执行顺序和编译顺序(vs工程引用关系)

    自:http://www.cnblogs.com/champ/p/execorder.html 在Unity中可以同时创建很多脚本,并且可以分别绑定到不同的游戏对象上,它们各自都在自己的生命周期中运行 ...

  5. c++ string wstring 字符串替换

      int CStringTool::Replace(std::wstring& strContent, std::wstring& strReplace, std::wstring  ...

  6. Spring中的代理模式

    代理模式 所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式是一种 ...

  7. python连接mysql实例分享_python

    示例一 #coding=UTF-8 import sys import MySQLdb import time reload(sys) sys.setdefaultencoding('utf-8') ...

  8. iOS编程(双语版) - 视图 - 手工代码(不使用向导)创建视图

    如何创建一个空的项目,最早的时候XCode的项目想到中,还有Empty Application template这个选项,后来Apple把它 给去掉了. 我们创建一个单视图项目. 1) 删除main. ...

  9. MVC 之 System.Web.Optimization找不到引用

    在MVC4的开发中,如果创建的项目为空MVC项目,那么在App_Start目录下没有BundleConfig.cs项的内容,在手动添加时在整个库中都找不到:System.Web.Optimizatio ...

  10. Mysql官方文档中争对安全添加列的处理方法。Mysql Add a Column to a table if not exists

    Add a Column to a table if not exists MySQL allows you to create a table if it does not exist, but d ...