当前位置: 首页 > news >正文

SQL WHERE 与 HAVING

WHERE 和 HAVING 都是 SQL 中用于筛选数据的子句,但它们有重要的区别

WHERE 子句

  • 在 分组前 过滤数据

  • 作用于 原始数据行

  • 不能使用聚合函数

  • 执行效率通常比 HAVING 高

SELECT column1, column2
FROM table
WHERE condition;

HAVING 子句

  • 在 分组后 过滤数据

  • 作用于 分组结果

  • 可以使用聚合函数

  • 通常与 GROUP BY 一起使用

SELECT column1, aggregate_function(column2)
FROM table
GROUP BY column1
HAVING condition;

主要区别总结

特性WHEREHAVING
执行时机分组前分组后
作用对象原始行分组结果
聚合函数不能使用可以使用
性能通常更高效通常较低效
使用场景常规数据过滤分组结果过滤

示例

-- 使用WHERE筛选单价大于10的产品,然后按类别分组计算平均价格
SELECT category, AVG(price)
FROM products
WHERE price > 10
GROUP BY category;

-- 使用HAVING筛选平均价格大于50的类别
SELECT category, AVG(price)
FROM products
GROUP BY category
HAVING AVG(price) > 50;

在实际应用中,WHERE 和 HAVING 经常一起使用,WHERE 先过滤原始数据,GROUP BY 分组后,再用 HAVING 过滤分组结果。

http://www.dtcms.com/a/107946.html

相关文章:

  • Scala集合
  • PostgreSQL JSON 与 JSONB 类型查询详解:差异、示例与最佳实践
  • 【STM32设计】基于STM32的智能门禁管理系统(指纹+密码+刷卡+蜂鸣器报警)(代码+资料+论文)
  • Gartner预计2025年AI支出达6440亿美元:数据中心与服务器市场的关键驱动与挑战
  • R语言、MaxEnt模型丨物种分布模拟技术的研究进展与技术挑战
  • mapbox_gl The requested URL returned error: 401
  • 小程序json对象数据从上一个页面传给下一个页面
  • 最短路径--SPFA算法
  • 软考中级网络工程师第十一章网络管理
  • Winform MQTT客户端连接方式
  • 力扣268.丢失的数字
  • 树莓派超全系列文档--(16)无需交互使用raspi-config工具其三
  • 【微知】ARM CPU是如何获取某个进程的页表的?(通过TTBR寄存器,MMU进行处理)
  • 基于javaweb的SSM+Maven校园共享自行车管理系统设计与实现(源码+文档+部署讲解)
  • 基于策略模式的CATIA元素显隐控制工具开发实践——PySide6与PyCATIA深度整合方案
  • 什么是PID控制?
  • FFmpeg命令详解
  • 波动率 计算学习 离散系数
  • 【JavaScript】十四、轮播图
  • 探索Ark-TS语言:什么是Ark-TS?如何入门?有什么基础容易上手?
  • 系统分析师备考启动
  • HashMap底层采用数组+链表而非数组+数组的设计,主要基于以下原因及两者的对比:
  • docker安装ngnix
  • diffusion-vas 提升遮挡区域的分割精度
  • openEuler24.03 LTS下安装Flume
  • 动态规划:第一弹(第N个泰波那契数列、使用最小花费爬楼梯、解码方法)
  • AI安全:构建负责任且可靠的系统
  • leetcode287.寻找重复数
  • 【开发问题记录】回流(Reflow) 和 重绘(Repaint)
  • C++的UDP连接解析域名地址错误