以前在学校里学习过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只是根据前面查询出来的是什么就可以后面接什么。

mysql having in_正确理解MySQL中的where和having的区别相关推荐

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

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

  2. 正确理解WPF中的TemplatedParent

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

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

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

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

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

  5. 深入理解mysql系列_深入理解MySQL系列之锁

    按锁思想分类 悲观锁 优点:适合在写多读少的并发环境中使用,虽然无法维持非常高的性能,但是在乐观锁无法提更好的性能前提下,可以做到数据的安全性 缺点:加锁会增加系统开销,虽然能保证数据的安全,但数据处 ...

  6. linux重启mysql一直_linux正确重启MySQL的方法

    由于是从源码包安装的mysql,所以系统中是没有红帽常用的servcie mysqld restart这个脚本 只好手工重启 有人建议killall mysql.这种野蛮的方法其实是不行的,强制终止的 ...

  7. mysql memory 索引_理解MySQL——索引与优化

    索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将对整个表进 ...

  8. 2.如何正确理解古典概率中的条件概率《zobol的考研概率论教程》

    写本文主要是帮助粉丝理解考研中的古典概率-条件概率的具体定义. "B事件发生的条件下,A事件发生的概率"? "在A集合内有多少B的样本点"? "在B约 ...

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

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

最新文章

  1. 你不应该忽略的五个机器学习项目一览
  2. opencv-python将视频切分成帧
  3. ios c语言编译环境搭建,iOS开发之runtime(一):runtime调试环境搭建
  4. axios如何在nodejs项目里封装_【面经】jq 中 ajax 和 axios 区别,瀑布流布局,添加删除事件...
  5. 算法 - 堆排序(大顶堆、小顶堆)
  6. Kubernetes-基本介绍/核心功能/相关术语(一)
  7. Python办公自动化|光速对比并提取两份Word/Excel中的不同元素
  8. luncence学习
  9. 暴风激活工具,劫持Chrome浏览器主页
  10. 锯齿波FMCW测距、测速的原理
  11. Vue + Spring Boot 项目实战(十三):使用 Shiro 实现用户信息加密与登录认证
  12. Volatility使用与实战
  13. Pandas合并excel文件错位现象的解决
  14. sqlserver-创建表
  15. linux shell ifs,shell - IFS分隔符
  16. 移动端rem适配ipad, ipad pro
  17. 关于麻将和牌算法的那些事
  18. Unparseable date: “2000-01-01“ 异常
  19. windows保护无法启动修复服务器,如何解决win10“Windows资源保护无法启动修复服务”错误 | MOS86...
  20. 跨源通信--postMessage用法

热门文章

  1. 关于不能远程连接Linux中Mysql数据库的问题
  2. 一次bug死磕经历之Hbase堆内存小导致regionserver频繁挂掉
  3. 完成这个例子,说出java中针对异常的处理机制。
  4. Keil C 中全局变量 extern 的使用
  5. [精华] 数据库的查询优化技术
  6. Missing artifact com.sun:tools:jar:1.5.0
  7. linux shell awk 单引号分割
  8. pycharm 远程调试
  9. shell公共函数:/etc/init.d/functions
  10. _splitpath,_makepath分析路径