SQL语句之order by 、group by、having、where
百度知道:
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的更多相关文章
- 基本SQL语句练习(order by,group by,having)
一.GROUP BY 和ORDER BY 1.使用Order by 进行排序,默认升序ASC,降序则使用DESC;(还可以这样:order by 1表示按第一列排序:order by 2 desc表示 ...
- ysql常用sql语句(12)- group by 分组查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- 若sql语句中order by指定了多个字段,怎么排序?
举个例子吧: order by id desc,time desc 先是按 id 降序排列 (优先)如果 id 字段 有些是一样的话 再按time 降序排列 (前提是满足id降序排列)
- sql语句中order by 多个字段同时排序的应用
order by 后面可以跟多个字段进行排序 用A1代表第一个字段,A2代表第二个字段 一.order by A1 , A2 desc 指的是用A1升序A2降序 二.order by A1 a ...
- sql 语句中 order by 的用法
order by 是用在where条件之后,用来对查询结果进行排序 order by 字段名 asc/desc asc 表示升序(默认为asc,可以省略) desc表示降序 order by 无法用于 ...
- 【MySQL】若sql语句中order by指定了多个字段,则怎么排序?
举个例子吧:order by id desc,time desc先是按 id 降序排列 (优先)如果 id 字段 有些是一样的话 再按time 降序排列 (前提是满足id降序排列) order b ...
- [转]SQL语句:Group By总结
1. Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”.它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若 ...
- SQL语句:Group By总结
1. Group By 语句简介: Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)".它的作用是通过一定的规则将一个数据集划分成若干个 ...
- SQL语句之Group By
1. Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”.它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若 ...
随机推荐
- jQuery-append添加元素click无效
很久没有使用jQuery,做项目的时候遇到一个小问题就是网页加载之后的append的元素是可以执行click事件,网页加载完成之后的,再次append的元素不执行click事件,简单的通过ul模拟一下 ...
- iOS开发-Certificates、Identifiers和Profiles详解
如果是才进入公司进行开发的iOS程序猿来说人难免会对苹果的证书.配置文件,尤其有的需要重头开始的公司来说,最简单的来说真机调试是免不了和这些东西打交道的,有的时候赶时间做完了可能心里也犯嘀咕,本文根据 ...
- 领扣-1/167 两数之和 Two Sum MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Create an Android library
官方文档 创建 Android 库 [Create an Android library] Android 库在结构上与 Android app module 相同.它可以提供构建应用所需的一切内容, ...
- 以相声之名说android四大对象
当里个当,当里个当,Android此系统,易用有好用.谁为其奉献,只靠四巨头. 当里个当,当里个当,老大唤activity,界面缔造者.清水出芙蓉,天然来雕饰. 当里个当,当里个当,你若明白他,周期咋 ...
- Android -- 屏幕亮度
获取屏幕亮度 int getScreenBrightness(Activity activity) { int value = 0; ContentResolver cr = activity.get ...
- ProBase
http://haixun.olidu.com/probase.html A Data Driven Semantic Network for Text Understanding Probase i ...
- php命名空间的使用,同一个命名空间可以在多个文件中定义
php namespace的使用,直接打印出已经定义的命名空间 直接上代码,a.php , b.php, c.php , main.php a.php <?php namespace A{ cl ...
- Python编程工具pycharm的使用
简介 俗话说工欲善其事必先利其器,所以对于程序员来说,使用python编程必须有一个强大的Python编程工具,这款工具就是pycharm. PyCharm是一种Python IDE,带有一整套可以帮 ...
- 持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]
转载:https://www.abcdocker.com/abcdocker/2065 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkin ...