日出259 2023-05-30 11:33 采纳率: 54.5%
浏览 35

HAVING子句在GROUP BY后面什么时候使用,什么时候不使用?

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子句呢

  • 写回答

3条回答 默认 最新

  • 过尽漉雪千山 2023-05-30 13:49
    关注

    第一个错了是因为在count和()之间多打了个空格。然后having的用法是当有聚合函数的条件作为判断时,放在group by后面使用。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月30日

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题