mysql查询中group by语句中出现sql_mode=only_full_group_by

mysql文档中的说明 https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html

  ONLY_FULL_GROUP_BY

       对于GROUP BY聚合操作,如果在SELECT中的列、HAVING或者ORDER BY子句的列,没有在GROUP BY中出现,那么这个SQL是不合法的。是可以理解的,因为不在 group by 的列查出来展示会有矛盾。

        表:user,正常查询应该是三个,加上group by 后,就会变成不确定要查询出哪个,mysql也不知道到底给你返回A 还是B 。如果sql_mode中有ONLY_FULL_GROUP_BY就会报错,所以这个还是要好好的检查一下你的sql是否存在逻辑问题。

               解决的办法可以执行sql:SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 这种方式的在mysql重启后还是会有问题,建议修改mysql下my.cnf文件(linux:/etc/my.cnf;windows:mysql-*/my.ini),找到#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 这个注释掉,改成下面的
   sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

                                 

          


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值