[Err] 1111 - Invalid use of group function

本文为博主原创,未经允许不得转载:

        初衷,本想通过group by sql语句查询出不同id下总数在一定范围内的数据,所以产生如下的sql,及错误sql

select * from TBL_MONTH_ONLINE_INFO m where SUM(c.money)=0 AND STATDATE < '201707' AND STATDATE > '201801' GROUP BY c.studentId

本来要实现的功能是分组查询出总数在一定范围内,且在规定日期内的总数。才产生以上的sql,导致报以上的错误:[Err] 1111 - Invalid use of group function;

     正确的sql语句应该为:

select * from TBL_MONTH_ONLINE_INFO m where STATDATE < '201707' AND STATDATE > '201801' GROUP BY c.studentId  HAVING SUM(c.money)=0

用以上的sql既可以执行。

 

说明:

GROUP BY,顾名思义:根据...分组,在SQL中常根据指定字段分组(指定字段内容相同是为一组),然后针对组进行相关操作

WHERE和HAVING的区别在于:

where 子句的作用是对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

示例错句的问题就在于:WHERE子句中使用集函数。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值