having的用法

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

总结

以上所述是小编给大家介绍的mysql having用法解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

mysql have_mysql having用法解析相关推荐

  1. 转:mysql group by 用法解析(详细)

    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...

  2. MySQL for update 用法解析

    目录 基本原理与用法 一定需要注意的点 其他补充 间隙锁的范围: 锁的介绍: 索引失效的常见场景: 基本原理与用法 MySQL在查询语句后面加上 for update ,例如 select * fro ...

  3. mysql union result,【经验】Mysql的UNION用法解析及TP中写法

    最近也是在写项目中碰到的这个问题,需要将两个SELECT查询结果组合起来进行分组排序,想到了用union方法,用TP的union操作根本无法完成复杂的union操作,于是搜罗了一下,先说一下union ...

  4. mysql中group by用法解析

    MysqL group by 用法解析 2013年03月08日 08:43:30 JavaDynamic 阅读数:25184 一.group by语法可以根据给定数据列的每个成员对查询结果进行分组统计 ...

  5. MySQL之事务 索引 锁_MySql 知识点之事务、索引、锁原理与用法解析

    本文实例讲述了MySql 知识点之事务.索引.锁原理与用法.分享给大家供大家参考,具体如下: 事务 事务概念 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎执行一组操作语句, ...

  6. mysql回滚用法_Mysql误操作后利用binlog2sql快速回滚的方法详解

    前言 在日常工作或者学习中,操作数据库时候难免会因为"大意"而误操作,需要快速恢复的话通过备份来恢复是不太可能的,下面这篇文章主要给大家介绍关于Mysql误操作后利用binlog2 ...

  7. mysql中as用法

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

  8. 四种Java线程池用法解析

    四种Java线程池用法解析 本文为大家分析四种Java线程池用法,供大家参考,具体内容如下 http://www.jb51.net/article/81843.htm 1.new Thread的弊端 ...

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

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

最新文章

  1. 数据为什么要可视化?如何可视化?
  2. MyBatis Generator:代码生成器
  3. 8家大厂SSP offer的清华学长谈算法岗是否人间地狱(送七本学长手写iPad笔记)...
  4. jquery与ajax的XMLHttpRequest对象介绍
  5. Google、MS和BAT教给我的面试真谛
  6. C++之char , signed char , unsigned char
  7. (27)FPGA面试技能提升篇(UVM、VMM)
  8. 线性表的链式存储-单链表
  9. 数据库开发综合案例——仓库管理系统设计
  10. MFC使用SaveAs函数保存Excel文件时,弹出“文件已存在”问题
  11. 人工智能:python 实现 第十章,NLP 第一天 入门介绍及使用stemming还原词汇
  12. strlen源码分析
  13. 安全管理体系升级 迈动互联获得ISO国际认证
  14. 移动化之后,BAT下一步走向何方?我们又该走向何方?
  15. mysql create definer_改写 mysqldump 解决 DEFINER 问题-爱可生
  16. [回归初作]——edge浏览器的小游戏
  17. 怎么识别手写的文字?办公常备软件说明
  18. R语言使用wilcox.test函数执行wilcox符号秩检验获取总体中位数(median)的置信区间(默认输出结果包括95%置信水平的置信区间)
  19. QT OpenCV人脸考勤识别
  20. linux截图后不见,xubuntu14.04截图,彻底到Linux一个半月后记

热门文章

  1. 《oracle大型数据库系统在AIX/unix上的实战详解》讨论31: oracle、sybase 数据库的不同访问...
  2. 通过WebAssembly在浏览器运行PHP
  3. Codeforces 825E - Minimal Labels
  4. Golang-简洁的并发
  5. 黑马程序员-Java基础知识预备之Java流程控制与数组
  6. C# 的关键字系列 (3 of n)
  7. 人月神话——焦油坑 《读后感》
  8. 通信行业还是一个靠人际的行业
  9. iis php根目录可以访问子目录不行,wordpress在IIS下伪静态后子目录无法访问的解决方法...
  10. mysql设置keepalived_MySQL高可用性之Keepalived+MySQL(双主热备)