Where与Having的区别
来源:互联网 发布:淘宝领的红包在哪里 编辑:程序博客网 时间:2024/06/07 17:14
地球人都知道,Where关键字的作用是过滤,选取符合条件的记录,而Having关键字的作用则是,为聚合结果指定条件。但是,在某些条件下,使用这两者可以得到一样的结果。
比如以下的例子:
1.SELECT BoxType,COUNT(1) FROM BoxType GROUP BY BoxTypeHAVING BoxType='小箱';2.SELECT BoxType,COUNT(1) FROM BoxTypeWHERE BoxType='小箱'GROUP BY BoxType;
这两段语句得到的结果是一样的。
那么他们两者的区别在哪呢?
首先,Where 子句是用来指定 "行" 的条件的,而Having 子句是指定 “组” 的条件的,即
Where 子句 = 指定行所对应的条件
Having 子句 = 指定组所对应的条件
因此,2 语句会比较合适。
其次,当在Where子句和Having子句中都可以使用的条件,从语句的执行效率来看,最好写在Where子句中。
在使用Count函数等对表中的数据进行聚合操作时,DBMS内部会进行排序处理,而排序操作会增加机器的负担,减少排序的行数,可以增加处理速度。
使用Where子句指定条件时,由于排序之前就对数据进行了过滤,所以能够减少排序的数据量。但是Having子句是在排序之后才对数据进行分组的,因此与前者相比,需要排序的数据量就要多得多。
第三,使用Where子句更具速度优势的另一个理由是,可以对Where子句指定条件所对应的列创建索引,这样可以大幅提高处理速度。
第四,Where子句中不能使用聚合函数,而Having子句中可以。
阅读全文
0 0
- where 与 having 的区别
- where 与having的区别
- Having与Where的区别
- having 与where的区别
- Having与Where的区别
- Where与Having的区别
- where与having区别
- having 与where区别
- SQL中Where与Having的区别
- [SQL]WHERE与HAVING的区别
- SQL中Where与Having的区别
- SQL中where与having的区别
- HAVING子句与WHERE子句的区别
- 数据库中having 与where的区别
- SQL中where与having的区别
- Mysql中where与having的区别
- SQL中Where与Having的区别 .
- SQL中Where与Having的区别
- Qt UDP 广播简单示例
- 自定义--进度条
- 英语师徒会感想
- Linux下安装MySQL5.6
- Java导入导出Excel
- Where与Having的区别
- Controllable Abstractive Summarization
- 新手村 简单字符串 你的飞碟在这儿
- EventBus:Activity给Fragment传值
- Python向excel中写入数据
- 数学基础之概率与统计
- Java泛型与C++的区别
- 简单的网页制作
- C++ 扩展和嵌入 Python