IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Mysql where vs having

小小子,simaopig 2010-06-12 09:56:52 累计浏览 2,773 次
本机暂存

    在写SQL语句的时候,用的最多的条件子句就是”where”,而”having”也是条件子句。

    二者相似,却也有不同。让我们简单了解一下。

    where和having的区别是where子句对一个表的所有记录进行操作,只搜索与指定条件相匹配的记录。

    而having子句只对经过操作的表记录进行检索,对结果集进行更进一步的筛选。

    通常,having子句和group by子句相连,而where子句和select,delete和update语句相连。

where vs having 处理内容

    首先,让我们看如下两个例子,结果还是很有意思的。

    原图已失效

    原图已失效

    这两个图可以说明如下事情:

在一些简单查询上,having与where子句很像having是在结果集里执行条件,如果结果集里没有要查询条件的字段存在则报错,而where则不然

where vs having 聚合函数

    当我们在sql语句里使用了聚合函数时(啥子是聚合函数?),having与where的表现也不同。

    根据上一条的记录,如果返回的结果集里没有having子句的查询字段存在,sql会报错

    原图已失效

    根据上面的结果你可能会对having感到失望,别着急,经典的来了。

    原图已失效

    这是因为where子句的条件执行是在聚合函数执行前就执行了,这时还没有cnt字段生成呢。而having子句的执行是在聚合函数后执行的(处理结果的嘛),所以可行。

    Goog good study, day day up!

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,250)
  2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,397)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,163)
  4. Mysql监控指南 (累计阅读 21,350)
  5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,521)
  6. 如何查找消耗资源较大的SQL (累计阅读 15,209)
  7. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,056)
  8. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  9. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,904)
  10. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,708)