关于group by 语句要检索至少选修了一门课程的女生的姓名.(书上给出表格)要我们写select语句.答案是这样的 select snamefrom student ,scwhere sex='女'and student.sno= sc.snogroup bu snamehaving count(*)>=1我怎
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 04:14:24
关于group by 语句要检索至少选修了一门课程的女生的姓名.(书上给出表格)要我们写select语句.答案是这样的 select snamefrom student ,scwhere sex='女'and student.sno= sc.snogroup bu snamehaving count(*)>=1我怎
关于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
关于group by 语句要检索至少选修了一门课程的女生的姓名.(书上给出表格)要我们写select语句.答案是这样的 select snamefrom student ,scwhere sex='女'and student.sno= sc.snogroup bu snamehaving count(*)>=1我怎
看来你还是没有理解group by的用法,其实group by说白了就是合并汇总
像你的例子,sname就是学生的名字,现在就是对这个名字进行汇总,having 语句里是没有牵涉到课程号,但是count(*)是汇总行,也许这么写你看着迷糊,如果这么写,having count(课程号)>=1 你就能明白了,因为你的student ,sc这两个表里,一定有个课程号的列,所以count(*)和count(课程号)其实是一个意思.
另外,having后面只可以接聚合函数的条件,如count,sum,max这些,和where是差不多的