当前位置:  数据库>sqlserver

sql筛选记录的语句之where、having的区别

    来源: 互联网  发布时间:2014-08-29

    本文导语:  本节内容: where、having的区别 在sql语句中,HAVING是先分组再筛选记录,WHERE在聚合前先筛选记录。 即,作用在GROUP BY 子句和HAVING子句前;而 HAVING子句在聚合后对组记录进行筛选。 作用的对象不同。 WHERE 子句作用于表和视图...

本节内容:
where、having的区别

在sql语句中,HAVING是先分组再筛选记录,WHERE在聚合前先筛选记录。
即,作用在GROUP BY 子句和HAVING子句前;而 HAVING子句在聚合后对组记录进行筛选。

作用的对象不同。

WHERE 子句作用于表和视图,HAVING 子句作用于组。
WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算),而 HAVING 在分组和聚集之后选取分组的行。

因此,WHERE 子句不能包含聚集函数;

因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。

相反,HAVING 子句总是包含聚集函数。(严格说来,可以写不使用聚集的 HAVING 子句, 但这样做只是白费劲。同样的条件可以更有效地用于 WHERE 阶段。)比如说:
 

代码示例:
select * from tablename where id > 1;  和
select * from tablename having id > 1

二者的查询结果是没有区别的。不建议使用having。

这里提醒下,在mysql 存储过程的设计中,经常会用到where、having子句,有兴趣的朋友可以参阅脚本学堂之前的文章。

小结:
1、WHERE语句在GROUPBY语句之前;SQL会在分组之前计算WHERE语句。
2、HAVING语句在GROUPBY语句之后;SQL会在分组之后计算HAVING语句。


    
 
 

您可能感兴趣的文章:

  • sql server中distinct筛选重复记录的用法举例
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • Mysql增加主键或者更改表的列为主键的sql语句
  • sql语句实例 取得日志条目的sql语句
  • Mysql下在某一列后即表的某一位置添加新列的sql语句
  • SQL Server统计SQL语句执行时间的脚本
  • sql语句实例 统计页面链接的sql语句
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • 一条SQL语句搞定Sql2000 分页
  • C#中验证sql语句是否正确(不执行语句)
  • SQL Server数据库的修复SQL语句
  • SQL 语句拦截 P6SPY
  • C#使用带like的sql语句时防sql注入的方法
  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 在SQL Server的try...catch语句中获取错误消息代码的的语句
  • sql2005创建远程登录帐户的sql语句分享
  • SQL SERVER 查询正在实行的SQL语句
  • SQL语句中含有乘号报错的处理办法
  • sql无效字符引起的执行sql语句报错的解决方法
  • C#代码验证sql语句是否正确(只验证不执行sql)的方法
  • SQL Server中选出指定范围行的SQL语句代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SQL语句去掉重复记录,获取重复记录
  • sql语句怎么写:将table中字段name='string1'的记录都改为name='string2'的记录
  • SQL查找某一条记录的方法
  • sql 查询记录数结果集某个区间内记录
  • 当ResultSet执行SQL成功后,我如何取得ResultSet的记录部条数
  • ResultSet rs = stmt.executeQuery(sql),如果该sql的结果是没有符合的记录,那么rs此时是什么东东?是null吗?如果不是,如何判断是空resultset?
  • sql面试题(查看数据中指定几行记录)
  • 从每个分类选择10条记录的sql语句
  • sql面试题(查看自动编号数据中指定几行记录)
  • 如何实现图片上传啊,而且我想把它记录在SQL SERVER中!!有空请帮我!!!
  • 如何得到返回记录集的总条数???sql问题,求助!!!
  • jsp+SQL删除记录出错,请指教!
  • 哪位能提供一个支持滚动记录集的MS SQL Server2000的JDBC驱动程序???
  • 怎样用SQL语句得到查询结果的记录数?100fen
  • SQL 重复记录问题的处理方法小结
  • SQL 统计一个数据库中所有表记录的数量
  • SQL语句查询数据库中重复记录的个数
  • sql server获得新记录标识列值的二种方法
  • SQL一条语句统计记录总数及各状态数
  • SQL语句练习实例之七 剔除不需要的记录行
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3