mysql错误总结

1.group by报错:

一般是5.7版本分组报错,我们可以查看信息 SELECT @@GLOBAL.sql_mode;

结果ONLY_FULL_GROUP_BY,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'

以上出现的原因来自于mysql5.7的新约定:

对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,所以对于设置了这个mode的数据库,在使用group by 的时候,就要用MAX(),SUM(),ANT_VALUE()这种聚合函数,才能完成GROUP BY 的聚合操作。

原因:

连接分组查询的时候如果有查询关联表信息groupBy语句中也必须有关联表信息才可以,这是5.7的大坑(默认配置)


2.字段为char或者varchar时,查询条件为数字时,mysql会将char转化为数字再与查询条件的数字比较

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SQL模式介绍 MySQL服务器可以在不同的SQL操作模式,并能应用这些模式不同的客户,根据不同的价值SQL模式系...
    张伟科阅读 1,477评论 0 2
  • 一. sql_mode的作用: sql_mode直接影响到SQL语法检查条件 二. 关于Mysql 的版本: My...
    JeniusYang阅读 657评论 0 0
  • 我不知道究竟做错了什么?心塞的厉害,好像很多事情都针对我一样,我都说过很多次了,很多行为是自发的,不是看别人,不是...
    OO碰到OO阅读 232评论 0 1
  • 人生就是一场旅途,没有一帆风顺,总会经历很多磨难,但我们依然要继续前进..... 每天身边都会来来往往...
    只是在想阅读 251评论 0 0
  • 老公要和我离婚了,我问他为什么,他说他不爱我了,觉得和我在一起生活没有了激情。我很难过,我说:“你以前说过你会爱我...
    家家有999本难念的经阅读 4,338评论 0 0