sql语句中where和having的区别
SQL 语句 区别 where having
2023-06-13 09:15:02 时间
HAVING是先分组再筛选记录,WHERE在聚合前先筛选记录.也就是说作用在GROUPBY子句和HAVING子句前;而HAVING子句在聚合后对组记录进行筛选。
作用的对象不同。WHERE子句作用于表和视图,HAVING子句作用于组。WHERE在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算),而HAVING在分组和聚集之后选取分组的行。因此,WHERE子句不能包含聚集函数;因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。相反,HAVING子句总是包含聚集函数。(严格说来,你可以写不使用聚集的HAVING子句,但这样做只是白费劲。同样的条件可以更有效地用于WHERE阶段。)比如说:
select*fromtablenamewhereid>1;和
select*fromtablenamehavingid>1
这两者是查询结果是没有区别的。不建议使用having
总结就两句话:
WHERE语句在GROUPBY语句之前;SQL会在分组之前计算WHERE语句。
HAVING语句在GROUPBY语句之后;SQL会在分组之后计算HAVING语句。
作用的对象不同。WHERE子句作用于表和视图,HAVING子句作用于组。WHERE在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算),而HAVING在分组和聚集之后选取分组的行。因此,WHERE子句不能包含聚集函数;因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。相反,HAVING子句总是包含聚集函数。(严格说来,你可以写不使用聚集的HAVING子句,但这样做只是白费劲。同样的条件可以更有效地用于WHERE阶段。)比如说:
select*fromtablenamewhereid>1;和
select*fromtablenamehavingid>1
这两者是查询结果是没有区别的。不建议使用having
总结就两句话:
WHERE语句在GROUPBY语句之前;SQL会在分组之前计算WHERE语句。
HAVING语句在GROUPBY语句之后;SQL会在分组之后计算HAVING语句。
相关文章
- sql server 备份还原_什么是SQL
- 一条sql查询语句执行过程解析
- 你一定会用到的3条Sql语句
- SQL语句练习04
- SQL开发知识:关于表oracle的一些特殊查询sql语句
- Oracle数据库中SQL语句的优化技巧
- Oracle中简单查询、限定查询、数据排序SQL语句范例和详细注解
- SQL判断语句用法和多表查询
- 复制表结构和数据SQL语句详解数据库
- sql掌握MySQL,才能写出精彩的SQL语句(mysql不等于如何写)
- 突破SQL难关:MSSQL字典指南(mssql字典)
- sql 注入MSSQL防止SQL注入:强力防护的关键步骤(mssql阻止)
- 删除MySQL中的SQL语句介绍(删除sql mysql)
- MySQL中的SQL语句倒序排列技巧(mysql中sql倒叙)
- azure sql比较分析AWS MySQL 与 Azure SQL的区别(aws mysql 还是)
- MySQL快捷执行一键执行SQL语句(mysql一键执行sql)
- 语句妙用Oracle将SQL语句拼接妙趣横生(oracle中拼接sql)
- 实现数据库优化Oracle中利用SQL语句实现数据库性能优化(oracle中执行sql)
- Oracle数据库深入学习SQL标签的用法(oracle中sql标签)
- 者Oracle SQL初学者突破入门,打好基础(oracle sql初学)
- access数据库用sql语句添加字段,修改字段,删除字段
- 动态SQL语句使用心得
- sql条件查询语句的简单实例
- t-sql/mssql用命令行导入数据脚本的SQL语句示例