having和where的区别在于作用时机和场景:1.where在分组前筛选行,用于过滤原始数据,如筛选工资>5000的员工;2.having在分组后筛选结果,用于过滤聚合结果,如保留员工数>5的部门;3.两者可同时使用,如先筛选工资>5000的员工,再保留平均工资>8000的部门;4.不能在where中使用聚合函数,因为其逐行判断,而聚合计算需基于一组行。
在 MySQL 查询中,HAVING 和 WHERE 看起来都能用来筛选数据,但它们的作用时机和适用场景完全不同。简单来说:WHERE 是在分组前筛选行,而 HAVING 是在分组后筛选结果。
一、WHERE:用于过滤原始数据行
WHERE 子句是在执行 GROUP BY 之前起作用的,它用来限制从表中检索出来的原始数据行。
举个例子:
SELECT department, COUNT(*) AS num_employeesFROM employeesWHERE salary > 5000GROUP BY department;
登录后复制
文章来自互联网,不代表电脑知识网立场。发布者:,转载请注明出处:https://www.pcxun.com/n/678068.html