All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
AJAX初体验之上手篇_[AJAX教程]
动态网页制作学习:PHP预定义变量_php资料_编程技术
轻松实现无刷新三级联动菜单[VS2005与AjaxPro]_[Asp.Net教程]
程序设计中的三层架构_[Asp.Net教程]
delphi发展的历史
PHP加密文本文件并限制特定页面的存取_php资料_编程技术
Apache服务器攻略,用户认证简单配置方案集_php资料_编程技术
Delphi函数中参数的使用实例-方法
用PHP程序实现删除目录的三种方法实例_php资料_编程技术
SQL中CASE的用法_[SQL,Server教程]
Reading number is top 10 pictures
福利福利。。。。。。
The money of more than 100 countries and regions15
陪睡门马睿菈自曝写真 称首拍大尺度照片3
梦幻的风景
青春清纯美女大集合3
In 2013 hercules Arnold classic2
大四女生借债隆胸成功
西班牙山村小景2
妹子最好别玩单反
Poor doll, hand job was caught the currently in effect by his dad
Download software ranking
Ashlynn Video4
WebService在.NET中的实战应用教学视频 → 第2集
Tram sex maniac 2 (H) rar bag12
金山office2007
C++编程教程第三版
Boxer's Top ten classic battle2
Sora aoi‘s film--Lust fan wall
终极变速大师Speeder3.26
Boxer vs Yellow4
Kung.Fu.Panda.2
归海一刀 published in(发表于) 2014/2/3 6:46:18 Edit(编辑)
查询中where和having的区别_[SQL Server教程]

查询中where和having的区别_[SQL Server教程]

查询中where和having的区别_[SQL Server教程]

having子句与where有相似之处但也有区别,都是设定条件的语句。
在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。
简单说来:
where子句:
select sum(num) as rmb from order where id>10
//只有先查询出id大于10的记录才能进行聚合语句

having子句:
select reportsto as manager, count(*) as reports from employees
group by reportsto having count(*) > 4

以northwind库为例.having条件表达示为聚合语句。肯定的说having子句查询过程执行优先级别低于聚合语句。
再换句说话说把上面的having换成where则会出错。统计分组数据时用到聚合语句。
对分组数据再次判断时要用having。如果不用这些关系就不存在使用having。直接使用where就行了。
having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。
聚合函数,这是必需先讲的一种特殊的函数:例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
SELECT SUM(population) FROM tablename
这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有
国家的总人口数。通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。
当你指定 GROUP BY region 时, 属于同一个region(地区)的一组数据将只能返回一行值.
也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值.
HAVING子句可以让我们筛选成组后的各组数据
HAVING子句在聚合后对组记录进行筛选
而WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前
看下面这几个例子吧:

一、显示每个地区的总人口数和总面积
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算。

二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000
在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。
相反,HAVING子句可以让我们筛选成组后的各组数据.




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.