HAVING子句在GROUP BY后面什么时候使用,什么时候不使用?
例如第一题:查询选修了课程1或课程2的学生姓名
SELECT sname
FROM student,sc
WHERE (cno='1' OR cno='2') AND student.sno=sc.sno
GROUP BY student.sno;
但如果我加上一句:HAVING COUNT (*)=1;
SELECT sname
FROM student,sc
WHERE (cno='1' OR cno='2') AND student.sno=sc.sno
GROUP BY student.sno
HAVING COUNT (*)=1;
显示报错
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*)=1' at line 5
但是在第二题中:查询同时选修了课程1与课程2的学生姓名
标准答案为
SELECT sname
FROM student,sc
WHERE student.sno=sc.sno AND cno IN ('1','2')
GROUP BY student.sno
HAVING COUNT(*)=2;
请问为什么这里有having子句,而第一题没有having子句呢