关于group by 语句

问题描述:

关于group by 语句
要检索至少选修了一门课程的女生的姓名.(书上给出表格)
要我们写select语句.
答案是这样的 select sname
from student ,sc
where sex='女'and student.sno= sc.sno
group bu sname
having count(*)>=1
我怎么都不明白为什么group by了名字以后就能够查出至少选修一门课程的学生.
having 语句里没有牵涉到课程号啊?
第一句漏了一个词,应该是 select distinct sname
1个回答 分类:综合 2014-11-23

问题解答:

我来补答
看来你还是没有理解group by的用法,其实group by说白了就是合并汇总
像你的例子,sname就是学生的名字,现在就是对这个名字进行汇总,having 语句里是没有牵涉到课程号,但是count(*)是汇总行,也许这么写你看着迷糊,如果这么写,having count(课程号)>=1 你就能明白了,因为你的student ,sc这两个表里,一定有个课程号的列,所以count(*)和count(课程号)其实是一个意思.
另外,having后面只可以接聚合函数的条件,如count,sum,max这些,和where是差不多的
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识