分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net

HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 和 SELECT 的交互方式类似。WHERE 搜索条件在进行分组操作之前应用;而HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中显示的任意项。

下面的示例按产品 ID 对 SalesOrderDetail 进行了分组,并且只包含那些订单合计大于 $1,000,000 且其平均订单数量小于 3 的产品组。

USE AdventureWorks;
SELECT ProductID, AVG(OrderQty) AS AverageQuantity, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
GROUP BY ProductID
HAVING SUM(LineTotal) > $1000000.00
AND AVG(OrderQty) < 3 ;

请注意,如果 HAVING 中包含多个条件,那么这些条件将通过 AND、OR 或 NOT 组合在一起。

理解应用 WHERE、GROUP BY 和 HAVING 子句的正确顺序对编写高效的查询代码会有所帮助:

  • WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。
  • GROUP BY 子句用来分组 WHERE 子句的输出。
  • HAVING 子句用来从分组的结果中筛选行。

对于可以在分组操作之前或之后应用的任何搜索条件,在 WHERE 子句中指定它们会更有效。这样可以减少必须分组的行数。应当在 HAVING 子句中指定的搜索条件只是那些必须在执行分组操作之后应用的搜索条件。

如果查询优化器确定 HAVING 搜索条件可以在分组操作之前应用,那么它就会在分组之前应用。查询优化器可能无法识别所有可以在分组操作之前应用的 HAVING 搜索条件。建议将所有这些搜索条件放在 WHERE 子句中,而不是 HAVING 子句中。

MySQL-HAVING的用法相关推荐

  1. MySQL:讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

    讨人喜欢的 MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果 ...

  2. 【node】express中mysql的基本用法、连接池的使用、事务的回滚

    [node]express中mysql的基本用法.连接池的使用 安装mysql包 mysql的配置信息 mysql基本操作 查询mysql并渲染数据 mysql插入操作 首先在html页面写上< ...

  3. Linux下Mysql的查询用法

    Linux下Mysql的查询用法 一.Mysql的delete删除语法 1.删除数据库 2.删除数据库的表 二.查询数据 1.基本查询 2.条件查询 三.数据库插入数据 1.创建新表 2.插入数据 四 ...

  4. MySQL replace into 用法

    MySQL replace into 用法(insert into 的增强版) 在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在: 2. 如果不存在,则插入:3.如果存在,则更新 ...

  5. Mysql临时表的用法 - 51CTO.COM

    Mysql临时表的用法 - 51CTO.COM Mysql临时表我们经常会用到,下面就为您详细介绍Mysql临时表的用法,供您参考,如果您对此方面感兴趣的话,不妨一看. 当工作在非常大的表上时,你可能 ...

  6. mysql中as用法

    重命名列名或者表名. as可理解为:用作.当成,作为:一般是重命名列名或者表名.(主要为了查询方便) 重命名列.如:表text, 列 column_1,column_2 你可以写成: 1 select ...

  7. mysql alter怎么用,mysql alter话语用法

    mysql alter语句用法 //主键 ALTER TABLE tablename add new_field_id int(5) UNSIGNED DEFAULT 0 NOT NULL anto_ ...

  8. pdo mysql limit_PHP mysql中limit用法详解(代码示例)

    在MySQL中,LIMIT子句与SELECT语句一起使用,以限制结果集中的行数.LIMIT子句接受一个或两个offset和count的参数.这两个参数的值都可以是零或正整数. offset:用于指定要 ...

  9. [转载]MySQL exists的用法介绍

    原文摘自:http://www.cnblogs.com/glory-jzx/archive/2012/07/19/2599215.html MySQL exists的用法介绍 有一个查询如下: 1 S ...

  10. mysql group concat 去重,MySQL group_concat() 函数用法

    MySQL group_concat() 函数用法 在使用 group by对数据进行分组后,如果需要对 select 的数据项进行字符串拼接,这时就需要用到group_concat()函数. 1.基 ...

最新文章

  1. 和平精英为什么找不到服务器,和平精英为什么登不上去 和平精英游戏登不上原因分析...
  2. Python 技术篇-容易被忽略的尾差问题
  3. html不换行溢出省略号代替,css控制不溢出,不换行,溢出部分省略号显示
  4. redisTemplate获得key的过期时间方法
  5. netflix_Netflix播放按钮剖析
  6. usb3.0 linux无法识别,USB3.0接口不能识别U盘的解决方法
  7. 【LeetCode - 42. 接雨水】
  8. java实现自动登录_java实现用户自动登录
  9. Android添加垂直滚动ScrollView 常见问题
  10. mysql实例备份和单库备份_史上最简单的MySQL数据备份与还原教程(上)(三十五)...
  11. 多特征线性回归梯度下降算法的matlab实现
  12. 106个计算机学部毕业设计项目大全(附源码)
  13. 【C++设计模式】抽象工厂模式
  14. java cmd 编译jar_Java程序在命令行下编译运行打Jar包
  15. token是什么意思
  16. 语音和噪声相关数据集(持续更新)
  17. qq设置头衔显示服务器异常,qq头衔如何设置
  18. <figure> <figcaption>筆記
  19. 自平衡自行车本质就是一个惯性飞轮,本质就是一样的!!!
  20. 软件测试的过程和产生的文档

热门文章

  1. Java ExceptionInInitializerError类
  2. 十分钟教你打造一个微信语音点歌系统
  3. Android 如何在第三方app 调起qq好友和qq群
  4. 世界上的编程语言已这么丰富,为什么还不够?
  5. 一致性哈希算法原理,应用及代码实现
  6. hive以5分钟间隔处理数据
  7. APM飞控自动飞行模式下,异常Land降落
  8. UML建模与软件开发设计(四)——包图设计
  9. java202302java学习笔记第十五天-罗马数字的两种写法2
  10. 医院如何实施无线覆盖方案