mysql have_mysql 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

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时要注意,他的位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无法执行二进制文件: 可执行文件格式错误_VB中.frm .frx .vbp .vbw .scc文件都有什么作用,你知道么?...

.frm 是每个窗体都有的&#xff0c;保存窗体的代码&#xff0c;你可以用记事本打开&#xff1b;.frx 窗体里使用图片、图标等资料&#xff0c;保存的是资源&#xff1b;.vbp 和.vbw 保存一个工程时他会自动生成这两个文件。.vbp 是关键的文件&#xff0c;它用来保存当前工程中的…

共享文件原理_fishhook 的实现原理浅析

| 作者&#xff1a;小可长江&#xff0c;目前在 bilibili 做音视频研发&#xff0c;业余时间喜欢研究好的源码和逆向打开姿势很重要早些时候&#xff0c;iOS中一提到“黑魔法”、HOOK&#xff0c;很多人第一时间想到的就是 AOP RunTime MethodSwizzling 这些不明觉厉的东西&…

ef power tools mysql_使用 EF Power Tool Code Frist 生成 Mysql 实体

使用 EF Power Tool Code Frist 生成 Mysql 实体1&#xff0c;在要生成的项目上右键2,3,4,5, 生成后的效果已知问题&#xff1a;1&#xff0c;在Mysql数据表中 tinyint(1) ,会被映射成为 C# bool &#xff0c;这样造成一些数据信息的丢失。 这个问题应该是EF 工具的问题&#…

python数据可视化散点图案例_Python数据可视化—散点图_python 数据可视化

Python数据可视化—散点图 PS: 翻了翻草稿箱&#xff0c; 发现居然存了一篇去年2月的文章。。。虽然naive&#xff0c;还是发出来吧。。。 本文记录了Python中的数据可视化——散点图scatter&#xff0c; 令x作为数据&#xff08;50个点&#xff0c;每个30维&#xff09;&#…

redis解决mysql主从延迟_mysql主从同步延迟问题解决方法

mysql主从同步延迟问题解决方法&#xff1a;在从服务器上执行show slave status;可以查看到很多同步的参数&#xff0c;我们需要特别注意的参数如下&#xff1a;Master_Log_File&#xff1a; SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的名称…

python重复元素判定_30段极简Python代码:这些小技巧你都Get了么

选自 | towardsdatascience转自 | 机器之心Python 是机器学习最广泛采用的编程语言&#xff0c;它最重要的优势在于编程的易用性。如果读者对基本的 Python 语法已经有一些了解&#xff0c;那么这篇文章可能会给你一些启发。作者简单概览了 30 段代码&#xff0c;它们都是平常非…

mysql主从数据库同步问题_聊聊MySQL主从数据库同步的那些事儿

在linux服务器下测试&#xff1a;主(master)服务器IP&#xff1a;219.223.5.105(对应内网IP&#xff1a;192.168.1.75)从(slave)服务器IP&#xff1a;219.223.5.104(对应内网IP&#xff1a;192.168.1.74)一、修改主服务器master[mysqld]log-binmysql-bin //[必须]启用二进制日…

360浏览器广告太多怎么办_360浏览器如何关闭广告自动推送

点击蓝字关注我们大家是不是在用360浏览器上网的时候经常会跳出广告来&#xff0c;这些广告有些时候是很烦人的&#xff0c;然而这些广告是能够关闭的&#xff0c;现在我们针对360浏览器&#xff0c;介绍如果关闭自动推送的广告。首先在360浏览器的右上方找到三条杠的“大队长”…

linux下php支持mysql_linux下php扩展mysqli的支持 .

mysqli是优化后的mysql&#xff0c;具体的优点baidu下就ok了cd php-5.2.8 在这下面有个ext文件夹里有mysqlicd ext/mysqlilinux下将源码文件编译应该都有configure吧&#xff0c;可这里没有&#xff0c;在我们已经安装php后&#xff0c;php5这个文件夹里的命令目录bin里有一个…

代码合并工具_作为程序员你必须知道的几款代码比较工具

在程序开发的过程中&#xff0c;程序员会经常对源代码以及库文件进行代码对比&#xff0c;在这篇文章里我们向大家介绍几款程序员常用的代码比较工具。WinMergeWinMerge是一款运行于Windows系统下的文件比较和合并工具&#xff0c;使用它可以非常方便地比较多个文档内容&#x…

mysql 修改数据库的数据库_如何更改MySQL数据库的数据库名

展开全部被取消的命令MySQL 之前提供了一个 rename database db_old to db_new 的命令来直接对数据库改名&#xff0c;可能由于实现的功能不完备(比62616964757a686964616fe58685e5aeb931333433653931如&#xff0c;这条命令可能是一个超大的事务&#xff0c;或者是由于之前的表…

powershell设置了权限依旧无法运行脚本_Power Shell折腾记

更多内容可以关注公众号“编程学习杂谈&#xff08;codingLearning&#xff09;”或者访问我的博客微软昨天刚刚发布了最新的Terminal图标&#xff0c;对是图标不是软件。对这个最新版的终端个人期待值还是很高的&#xff0c;不仅颜值高而且更好用&#xff0c;不过正式在稳定Wi…

mysql错误回显注入_基于错误回显的SQL注入整理

由于复习&#xff0c;停了好几天&#xff0c;今天换换模式做了一下关于错误回显的ctf题目&#xff0c;首先附上题目&#xff1a;here整理了一下网上的一些关于错误回显的方法&#xff0c;在这里就不带上地址了&#xff0c;请大牛们原谅&#xff1a;P0x00 关于错误回显用我自己的…

delphi中richedit中光标如何定位到最后_嵌入式开发之Linux系统中Vi编辑器的使用

请大家关注点赞&#xff0c;已经完成物联网相关开发&#xff0c;会从硬件层&#xff0c;硬件中间层&#xff0c;传输层&#xff0c;软件中间件(物联网云平台)&#xff0c;APP开发相关博文。首先从嵌入式开发博文开始&#xff01;上一节关于<>。本节关于Linux系统中Vi编辑…

什么是python自动化测试_python已经自动化了,大家一般用什么测试框架?

首先我们需要明白自动化测试框架更倾向于一种设计思想 &#xff0c;这种思想指导工具的使用或者自研开发&#xff0c;并且不是只能使用仅仅一种框架&#xff0c;结合被测系统本身特性一般是选择多种测试框架的组合&#xff0c;来满足测试和设计需求(开发、维护角度)。录制回放测…

nginx会将post请求转为get么_前端角度谈GET与POST的区别

GET与POST 参数&#xff1a;GET传递的参数只能带URL后面&#xff0c;文本格式QueryString&#xff0c;各浏览器一般有长度限制&#xff0c;一般认为是2083&#xff0c;如果有中文字符更短。提交到服务器端的数据量小。参考&#xff1a;https://www.XXX.com.cn/blog/20201021.ht…

js预览本地word文档_Github+docsify打造在线文档

效果图如下预览链接&#xff1a;https://a870439570.github.io/interview-docs快速开始首先先安装好npm和nodejs,这里就不做过多介绍了 自信安装即可 (https://blog.csdn.net/zimushuang/article/details/79715679)安装docsify 推荐安装 docsify-cli 工具&#xff0c;可以方便创…

python创建一个json_如何为Python选择一个更快的JSON库

使用JSON越多, 你就越有可能遇到JSON编码或解码瓶颈。Python的内置库也不错, 但是还有多个更快的JSON库可用: 如何选择使用哪一个呢?事实是&#xff0c;没有一个正确的答案&#xff0c;没有一个最快的JSON库来超越其他所有库:一个“快速的JSON库”对不同的人意味着不同的东西&…

python函数拟合不规则曲线_python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案...

第一种是进行多项式拟合&#xff0c;数学上可以证明&#xff0c;任意函数都可以表示为多项式形式。具体示例如下。 ###拟合年龄 import numpy as np import matplotlib.pyplot as plt #定义x、y散点坐标 x [10,20,30,40,50,60,70,80] x np.array(x) print(x is :\n,x) num […

mysql myisam 分表_mysql myisam简单分表设计

一般来说&#xff0c;当我们的数据库的数据超过了100w记录的时候就应该考虑分表或者分区了&#xff0c;这次我来详细说说分表的一些方法。目前我所知道的方法都是MYISAM的&#xff0c;INNODB如何做分表并且保留事务和外键&#xff0c;我还不是很了解。首先&#xff0c;我们需要…