原文: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的区别相关推荐

  1. mysql having in_正确理解MySQL中的where和having的区别

    以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别. 误区:不要错误的认为having和group by 必须配合使用. ...

  2. mysql where 与having_正确理解MySQL中的where和having的区别

    以前在学校里学习过SQLserver数据库,发现学习的都是皮毛,今天以正确的姿态谈一下MySQL中where和having的区别. 误区:不要错误的认为having和group by 必须配合使用. ...

  3. mysql中having的意思_正确理解MySQL中的where和having的区别

    展开全部 1.where和having都可以使用的32313133353236313431303231363533e4b893e5b19e31333363383964场景select goods_pr ...

  4. python的上下文管理用哪个关键字_正确理解python中的关键字“with”与上下文管理器...

    正确理解python中的关键字"with"与上下文管理器 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  正确理解python中的关键字&quo ...

  5. MySQL笔记3:深入理解MySQL中的NULL

    深入理解MySQL中的NULL NULL:表示没有值,无法比较两个没有值的量.

  6. 正确理解WPF中的TemplatedParent

    原文:正确理解WPF中的TemplatedParent http://www.cnblogs.com/mgen/archive/2011/08/31/2160581.html (注:Logical T ...

  7. matlab计算正负零序分量,5分钟教你正确理解电力系统中的正序负序零序.doc

    5分钟教你正确理解电力系统中的正序负序零序 电力 三相不平衡 作图法 对称分量法 1:三相不平衡的的电压(或电流),可以分解为平衡的正序.负序和零序 2:零序为3相电压向量相加,除以3 3:正序将BC ...

  8. 正确理解scipy中的coo_matrix函数

    正确理解scipy中的coo_matrix函数 1. 构造一个空矩阵 2. 使用ijv(triplet)格式构造一个矩阵 3. 用重复的索引构造矩阵 1. 构造一个空矩阵 这种用法比较简单,直接生成一 ...

  9. mysql两个空值相同吗_你知道mysql中空值和null值的区别吗

    前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...

  10. mysql中from unixtime,mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别

    摘要 腾兴网为您分享:mysql中FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别,作业大师,智慧大学,优化大师,先游等软件知识,以及流星蝴蝶剑,升学指导网软件,承德大宗,q ...

最新文章

  1. Codeforces 859C - Pie Rules
  2. Mybatis体系结构及工作流程
  3. 软件测试知识点 | Jmeter实现接口关联小结
  4. 500g linux怎么分区吗,500G的硬盘,怎么分区比较合理?
  5. 15.6. Plugin Hook 设计与实现
  6. STM32学习笔记(十) CAN通讯测试(环回模式)
  7. 基于AE+C#读取文件及图层输出
  8. HDU-2063-过山车(最大匹配)
  9. 机器学习笔记(二十):逻辑回归(2)
  10. java对象转json字符串
  11. 机电传动与控制【2】
  12. 【计算机视觉】人脸识别--人脸识别技术综述
  13. treeoj 1206~1208 1212
  14. 【Racket】安装与入门
  15. 基于K-近邻算法的手写数字识别研究
  16. 宏定义是什么?为什么要进行宏定义?宏定义的格式
  17. java换行转义字符串_回车,换行,转义字符“\r”,“\n”是什么关系?
  18. Cookie的应用---十天免登陆设计
  19. 2020年是走前端还是走后端好,前端又有哪些优势呢?
  20. oracle存储过程循环输入数据,oracle 存储过程循环插入数据

热门文章

  1. 极客大学架构师训练营 系统架构 CAP原理 分布式系统脑裂 第六次作业
  2. 服务器webpack构建性能,webpack性能优化——构建效率(一)
  3. Impala 的特点
  4. 二叉树的层序遍历 二叉树
  5. 随机梯度下降法(SGD)
  6. 数学建模——层次分析法
  7. python 摄像头采集_Python+OpenCV采集本地摄像头的视频
  8. CS231n李飞飞计算机视觉 卷积神经网络详解下
  9. 使用CAFFE训练自己的数据集并单张图片测试的方法
  10. 算法萌新如何学好动态规划(二)