zoukankan      html  css  js  c++  java
  • [Err] 1111

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

            初衷,本想通过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子句中使用集函数。

  • 相关阅读:
    JAVA读取PROPERTIES文件方式一
    JAVA时间工具类用法
    webservice
    SPRING+JPA+Hibernate配置方法
    Spring Boot,Spring Data JPA多数据源支持配置
    mybatis---实现关联表查询
    CXF WebService整合SpringMVC的maven项目
    ISO8583报文协议
    服务器换了一组硬盘后,读取不到硬盘数据,开不了机
    Ubuntu server12.04安装JDK+Tomcat+mysql
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/8068315.html
Copyright © 2011-2022 走看看