【mybatis】【mysql】mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause...

mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

mysql版本是5.7

 

1.导致出错的sql语句是:

<select id="findScNumByTime" parameterType="com.pisen.cloud.luna.ms.security.code.api.beans.ScNumCountBean"
            resultType="com.pisen.cloud.luna.ms.security.code.api.beans.ScNumCountBean">

        SELECT
            create_date queryDate,
            IFNULL(sum(security_code_total), 0) createSCNum,
            IFNULL(sum(print_num), 0) printNum
        FROM
            security_code_config
        WHERE
            tid = #{tid}
        AND
            DATE_FORMAT(create_date,#{queryDateFormat}) &lt;= DATE_FORMAT(#{endDate},#{queryDateFormat})
        AND
            DATE_FORMAT(create_date,#{queryDateFormat}) &gt;= DATE_FORMAT(#{startDate},#{queryDateFormat})
        GROUP BY
            DATE_FORMAT(create_date,#{queryDateFormat})
    </select>

即:

SELECT
    create_date queryDate,
    IFNULL(sum(security_code_total), 0) createSCNum,
    IFNULL(sum(print_num), 0) printNum
FROM
    security_code_config
WHERE
    tid = 'test_tenement_123'
AND 
    DATE_FORMAT(create_date,'%Y-%m') <= DATE_FORMAT('2019-03-12','%Y-%m')
AND
    DATE_FORMAT(create_date,'%Y-%m') >= DATE_FORMAT('2018-10-01','%Y-%m')
GROUP BY DATE_FORMAT(create_date,'%Y-%m')

 

 

2.导致出错的原因是因为:

请在mysql执行:

SHOW SESSION VARIABLES;

SHOW GLOBAL VARIABLES;

 

都可以看到:

 

错误原因就是这里:

only_full_group_by

要求select的列都要在group里面。

在mysql5.5没有这个问题!!!

 

 

3.解决方法:

分别执行

set session sql_mode= 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

set @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

 

注意先执行session的修改,再执行global的修改!!!!

 

修改完成后,再查看【执行第二步的两个sql查看即可】

 

 

 

4.最后,需要你重启spring boot服务,再进行查询调用,才会有效

【自己测试的情况就是,未重启mysql服务,重启了spring boot服务,再调用就可以正常执行了】

转载于:https://www.cnblogs.com/sxdcgaq8080/p/10517994.html

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值