having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。我的理解就是真实表中没有此数据,这些数据是通过一些函数生存。

SQL实例:

一、显示每个地区的总人口数和总面积.

SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region

先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中

的不同字段(一或多条记录)作运算。

二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。

SELECT region, SUM(population), SUM(area)

FROM bbc

GROUP BY region

HAVING SUM(area)>1000000

在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。

相反,having子句可以让我们筛选成组后的各组数据

MySQL判断某个字段的长度:

select home_page from aaa表 where char_length(trim(home_page))<10 and char_length(trim(home_page))>1;

mysql中的where和having子句的区别

mysql中的where和having子句都可以实现过滤记录的功能,但他们的用法还是有一些区别的,看一例子:

用group by和having子句联合来查出不重复的记录,sql如下:

select uid,email,count() as ct from edm_user081217 GROUP BY email

然后看这个,就容易理解了

select uid,email,count() as ct from edm_user081217 GROUP BY email HAVING ct > 1

先用group by 对email进行分组,在用having来过滤大于1的,这样查找出来的就是重复的记录了.

以下是having和where的区别:

Select city FROM weather WHERE temp_lo = (SELECT max(temp_lo) FROM weather);

作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。

WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算), 而 HAVING 在分组和聚集之后选取分组的行。因此,WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。 相反,HAVING 子句总是包含聚集函数。(严格说来,你可以写不使用聚集的 HAVING 子句, 但这样做只是白费劲。同样的条件可以更有效地用于 WHERE 阶段。)

在前面的例子里,我们可以在 WHERE 里应用城市名称限制,因为它不需要聚集。 这样比在 HAVING 里增加限制更加高效,因为我们避免了为那些未通过 WHERE 检查的行进行分组和聚集计算

综上所述:

having一般跟在group by之后,执行记录组选择的一部分来工作的。

where则是执行所有数据来工作的。

再者having可以用聚合函数,如having sum(qty)>1000

2017-07-05 12:03:48更新:

我们来对比一下

SELECT ip,ip1,ip2,ip3,ip4,count() ct,mobile_info FROM lmaster_log

GROUP BY ip1,ip2,ip3 ORDER BY ip1,ip2,ip3,ip4 HAVING ct > 2;

SELECT ip,ip1,ip2,ip3,ip4,count() ct,mobile_info FROM lmaster_log

GROUP BY ip1,ip2,ip3 HAVING ct > 2 ORDER BY ip1,ip2,ip3,ip4;

一个语句

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'HAVING ct > 2' at line 2

语句2是出现结果,所以我们在使用order by时要注意,他的位置HAVING子句必须位于GROUP BY之后ORDER BY之前。

mysql having 最大_mysql having的用法相关推荐

  1. mysql select 使用_mysql select简单用法

    mysql select简单用法 1.select语句可以用回车分隔 $sql=select * from article where id=1 和 $sql=select * from articl ...

  2. mysql group_concat去重_MySQL group_concat() 函数用法

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

  3. mysql使用方法_Mysql的常用用法

    一.mysql中limit的用法详解[数据分页常用] 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT  ...

  4. mysql substr无效_mysql substr()函数用法

    一.用法: substr(string string,num start,num length); string:为字符串: start:为起始位置: length:为长度. 二.区别: mysql中 ...

  5. mysql grant 通配符_mysql的grant用法(转)

    MySQL的权限系统围绕着两个概念: 认证->确定用户是否允许连接数据库服务器 授权->确定用户是否拥有足够的权限执行查询请求等. 如果认证不成功的话,哪么授权肯定是无法进行的. revo ...

  6. mysql prepare命令_MySQL之prepare用法 NemoWang

    MySQL官方将prepare.execute.deallocate统称为PREPARE STATEMENT,习惯称其为[预处理语句],下面是对其详细的介绍. 示例代码 PREPARE stmt_na ...

  7. mysql decimal 类型_MySQL数据类型DECIMAL用法详解

    MySQLDECIMAL数据类型用于在数据库中存储精确的数值.我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据. 要定义数据类型为DECIMAL的列,请使用以下语法: ...

  8. mysql limit 算法_MySQL的limit用法及优化(转)

    常规用法: 用法一: SELECT `keyword_rank`.* FROM `keyword_rank` WHERE (advertiserid='59') LIMIT 2 OFFSET 1; 比 ...

  9. explain mysql怎么用_mysql中explain用法详解

    EXPLAIN用于SELECT语句中的每个表返回一行信息.表以它们在处理查询过程中将被MySQL读入的顺序被列出 如果在select语句前放上关键词explain,mysql将解释它如何处理selec ...

最新文章

  1. 史上最简单的人脸识别项目登上GitHub趋势榜
  2. InstallShield学习笔记(2)-建立快捷方式
  3. ELK6.0已取消filebeat配置document_type
  4. Linux新手上路命令
  5. mysql面试考点_mysql面试知识点
  6. 【LeetCode笔记】剑指 Offer 47. 礼物的最大价值(Java、动态规划)
  7. after you've written your business model
  8. 給服务器增加swap空间缓解内存压力
  9. 对我国超级计算机的应用,要加强我国超级计算机应用人才储备
  10. 中国最好的AI竞赛落幕,我们整理了一份夺宝攻略
  11. [Data Pump]expdp导出笔记
  12. CCS5.5.0编译问题之” XDAIS_CG_ROOT ”
  13. 扩散模型 (Diffusion Model) 简要介绍与源码分析
  14. C语言题目——三子棋游戏
  15. oracle静默安装报错,静默安装oracle时报错
  16. Linux环境关闭开机自启动服务
  17. 查看自己电脑外网IP
  18. Windows API大全
  19. 2022年面试,整理全网初、中、高级常见 Java 面试题
  20. k8s.gcr.io的镜像无法下载的问题

热门文章

  1. 什么是导热系数?导热材料导热系数及测试方法介绍
  2. 领域模型,你真的理解的了吗?
  3. Tubes响应性数据系统的设计与原理
  4. 双一流贵州大学,新增大数据国家重点实验室
  5. 【c语言学习概述-基本数据类型】
  6. excel字符串和单元格拼接_excel字符合并技巧:几种连接字符串的方法助你高效办公...
  7. 用树莓派打造一个属于自己的服务器
  8. SAP的用户出口(User Exits)
  9. 全国英语二级计算机考试,全国计算机等级考试网上报名流程(国二,计算机二级)...
  10. Exception in thread“main“java.lang.IllegalArgument Exception:Unsupported class file major version 58