WHERE 和 HAVING 子句在 SQL 中均用于过滤数据,但作用范围不同:WHERE 子句过滤单行,HAVING 子句过滤分组后的结果集。WHERE 子句在分组前应用,影响聚合函数的结果行;HAVING 子句在分组后应用,影响分组行而不是单个行。WHERE 子句可以过滤任何列,而 HAVING 子句只能过滤聚合函数的结果。

WHERE 和 HAVING 子句的区别
在 SQL 查询中,WHERE 和 HAVING 子句用于过滤数据行,但它们有不同的作用范围和用途。
WHERE 子句
应用于表的单个行上。用于过滤出满足指定条件的行。在数据分组之前应用。影响聚合函数的结果行。
HAVING 子句
应用于分组后的结果集上。用于过滤出满足指定条件的分组。在数据分组之后应用。影响分组行而不是单个行。
对比表
魔乐社区
天翼云和华为联合打造的AI开发者社区,支持AI模型评测训练、全流程开发应用
102 查看详情
作用范围单行分组应用时机分组前分组后影响聚合函数结果行分组行
示例
以下查询使用 WHERE 子句过滤出销售额超过 1000 的订单:
SELECT * FROM orders WHERE sales_amount > 1000;
以下查询使用 HAVING 子句过滤出平均销售额超过 1000 的所有客户:
SELECT customer_id, AVG(sales_amount) AS avg_salesFROM ordersGROUP BY customer_idHAVING avg_sales > 1000;
注意事项
WHERE 子句可以过滤任何列,而 HAVING 子句只能过滤聚合函数的结果。HAVING 子句通常与 GROUP BY 子句一起使用,而 WHERE 子句可以独立使用。
以上就是sql中where和having的区别的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/625876.html
微信扫一扫
支付宝扫一扫