sql中where和having的区别
where 和 having 子句在 sql 中均用于过滤数据,但作用规模差别:where 子句过滤单行,having 子句过滤分组后的效果集。where 子句在分组前应用,影响聚合函数的效果行;having 子句在分组后应用,影响分组行而不是单个行。where 子句可以过滤任何列,而 having 子句只能过滤聚合函数的效果。
WHERE 和 HAVING 子句的区别
在 SQL 盘问中,WHERE 和 HAVING 子句用于过滤数据行,但它们有差别的作用规模和用途。
WHERE 子句
应用于表的单个行上。
用于过滤出知足指定条件的行。
在数据分组之前应用。
影响聚合函数的效果行。
HAVING 子句
应用于分组后的效果集上。
用于过滤出知足指定条件的分组。
在数据分组之后应用。
影响分组行而不是单个行。
比照表
特征 | WHERE 子句 | HAVING 子句 |
---|---|---|
作用规模 | 单行 | 分组 |
应用时机 | 分组前 | 分组后 |
影响 | 聚合函数效果行 | 分组行 |
示例
以下盘问使用 WHERE 子句过滤出销售额凌驾 1000 的订单:
SELECT * FROM orders WHERE sales_amount > 1000;
登录后复制
以下盘问使用 HAVING 子句过滤出平均销售额凌驾 1000 的所有客户:
SELECT customer_id, AVG(sales_amount) AS avg_sales FROM orders GROUP BY customer_id HAVING avg_sales > 1000;
登录后复制
注重事项
WHERE 子句可以过滤任何列,而 HAVING 子句只能过滤聚合函数的效果。
HAVING 子句通常与 GROUP BY 子句一起使用,而 WHERE 子句可以自力使用。
以上就是sql中where和having的区别的详细内容,更多请关注本网内其它相关文章!
免责说明:以上展示内容泉源于相助媒体、企业机构、网友提供或网络网络整理,版权争议与本站无关,文章涉及看法与看法不代表GA黄金甲滤油机网官方态度,请读者仅做参考。本文接待转载,转载请说明来由。若您以为本文侵占了您的版权信息,或您发明该内容有任何涉及有违公德、冒犯执法等违法信息,请您连忙联系GA黄金甲实时修正或删除。