百度空间 | 百度首页 
 
查看文章
 
where、group by、having 区别
2008-06-23 14:51

数据库结构:

数据表:student
表结构:
Field Name DataType Len
id                int           20
name           varchar    25
major           varchar    25
score           int           20
sex              varchar    20
rn
表数据:
编号/姓名/专业/学分/性别
id   name major     score sex
1    jak    Chinese    40    f
2    rain    Math        89    m
3    leo    Phy          78    f
4    jak    Math         76    f
5    rain    Chinese   56    m
6    leo    Math         97    f
7    jak    Phy          45    f
8    jak    Draw         87    f
9    leo    Chinese    45    f

现在我们要得到一个视图:
要求查询性别为男生,并且列出每个学生的总成绩:
SQL:
select s.*,sum(s.score) from student s where sex=''f'' group by s.name

Result:
id   name major     score sex sum(s.score)
1    jak    Chinese    40    f       248
3    leo    Phy         78     f       220

可以看到总共查到有两组,两组的学生分别是jak和leo,每一组都是同一个学生,这样我们就可以使用聚合函数了。
只有使用了group by语句,才能使用如:count()、sum()之类的聚合函数。

下面我们再对上面的结果做进一步的筛选,只显示总分数大于230的学生:
SQL:
select s.*,sum(s.score) from student s where sex=''f'' group by s.name having sum(s.score)>230

Result:
id   name major     score       sex   sum(s.score)
1    jak    Chinese    40          f       248

可见having于where的功能差不多。

结论:
1.WHERE 子句用来筛选 FROM 子句中指定的操作所产生的行。
2.GROUP BY 子句用来分组 WHERE 子句的输出。
3.HAVING 子句用来从分组的结果中筛选行。


文章来源(WEB开发技术知识库):http://cn-web.com/cnweb/18/594/article/


类别:默认分类 | 添加到搜藏 | 分享到i贴吧 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2008-07-23 15:51 | 回复
Very good,but ,I must ask"你的实例用的是"Mysql"数据库吗?"
 
2
2008-07-24 09:37 | 回复
lijunwyf:你好,是sqlserver2000的..
 
3
2008-07-24 10:20 | 回复
asdf
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu