正确理解MySQL中的where和having的区别
原文:https://blog.csdn.net/yexudengzhidao/article/details/54924471
以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别。
误区:不要错误的认为having和group by 必须配合使用。
下面以一个例子来具体的讲解:
1. where和having都可以使用的场景
select goods_price,goods_name from sw_goods where goods_price > 100
select goods_price,goods_name from sw_goods having goods_price > 100
解释:上面的having可以用的前提是我已经筛选出了goods_price字段,在这种情况下和where的效果是等效的,但是如果我没有select goods_price 就会报错!!因为having是从前筛选的字段再筛选,而where是从数据表中的字段直接进行的筛选的。
2. 只可以用where,不可以用having的情况
select goods_name,goods_number from sw_goods where goods_price > 100
select goods_name,goods_number from sw_goods having goods_price > 100 //报错!!!因为前面并没有筛选出goods_price 字段
3. 只可以用having,不可以用where情况
查询每种goods_category_id商品的价格平均值,获取平均价格大于1000元的商品信息
select goods_category_id , avg(goods_price) as ag from sw_goods group by goods_category having ag > 1000
select goods_category_id , avg(goods_price) as ag from sw_goods where ag>1000 group by goods_category //报错!!因为from sw_goods 这张数据表里面没有ag这个字段
注意:where 后面要跟的是数据表里的字段,如果我把ag换成avg(goods_price)也是错误的!因为表里没有该字段。而having只是根据前面查询出来的是什么就可以后面接什么。
---------------------
转载于:https://www.cnblogs.com/Andrew520/p/10020456.html
正确理解MySQL中的where和having的区别相关推荐
- mysql having in_正确理解MySQL中的where和having的区别
以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别. 误区:不要错误的认为having和group by 必须配合使用. ...
- mysql where 与having_正确理解MySQL中的where和having的区别
以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别. 误区:不要错误的认为having和group by 必须配合使用. ...
- mysql中having的意思_正确理解MySQL中的where和having的区别
展开全部 1.where和having都可以使用的32313133353236313431303231363533e4b893e5b19e31333363383964场景select goods_pr ...
- python的上下文管理用哪个关键字_正确理解python中的关键字“with”与上下文管理器...
正确理解python中的关键字"with"与上下文管理器 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 正确理解python中的关键字&quo ...
- MySQL笔记3:深入理解MySQL中的NULL
深入理解MySQL中的NULL NULL:表示没有值,无法比较两个没有值的量.
- 正确理解WPF中的TemplatedParent
原文:正确理解WPF中的TemplatedParent http://www.cnblogs.com/mgen/archive/2011/08/31/2160581.html (注:Logical T ...
- matlab计算正负零序分量,5分钟教你正确理解电力系统中的正序负序零序.doc
5分钟教你正确理解电力系统中的正序负序零序 电力 三相不平衡 作图法 对称分量法 1:三相不平衡的的电压(或电流),可以分解为平衡的正序.负序和零序 2:零序为3相电压向量相加,除以3 3:正序将BC ...
- 正确理解scipy中的coo_matrix函数
正确理解scipy中的coo_matrix函数 1. 构造一个空矩阵 2. 使用ijv(triplet)格式构造一个矩阵 3. 用重复的索引构造矩阵 1. 构造一个空矩阵 这种用法比较简单,直接生成一 ...
- mysql两个空值相同吗_你知道mysql中空值和null值的区别吗
前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...
- mysql中from unixtime,mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别
摘要 腾兴网为您分享:mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别,作业大师,智慧大学,优化大师,先游等软件知识,以及流星蝴蝶剑,升学指导网软件,承德大宗,q ...
最新文章
- Codeforces 859C - Pie Rules
- Mybatis体系结构及工作流程
- 软件测试知识点 | Jmeter实现接口关联小结
- 500g linux怎么分区吗,500G的硬盘,怎么分区比较合理?
- 15.6. Plugin Hook 设计与实现
- STM32学习笔记(十) CAN通讯测试(环回模式)
- 基于AE+C#读取文件及图层输出
- HDU-2063-过山车(最大匹配)
- 机器学习笔记(二十):逻辑回归(2)
- java对象转json字符串
- 机电传动与控制【2】
- 【计算机视觉】人脸识别--人脸识别技术综述
- treeoj 1206~1208 1212
- 【Racket】安装与入门
- 基于K-近邻算法的手写数字识别研究
- 宏定义是什么?为什么要进行宏定义?宏定义的格式
- java换行转义字符串_回车,换行,转义字符“\r”,“\n”是什么关系?
- Cookie的应用---十天免登陆设计
- 2020年是走前端还是走后端好,前端又有哪些优势呢?
- oracle存储过程循环输入数据,oracle 存储过程循环插入数据