MySQL5.7+group by报错only_full_group_by解决方案

今天和老师在做项目的时候写了一句SQL,在教室的数据库环境中MySQL5.1中并没有报错。
select ordernum,createtime,status from orderlist where isdelete = 0 and uid = {$uid} group by ordernum order by createtime desc

总所周知,MySQL数据库有一定的不严谨(指的是老版本)。所以针对这些老版本也确实出现了不少的非主流写法(在此是指别的数据库会报错的SQL)。

然而我本机的数据库环境是Mysql5.7的所以在运行的时候出现了报错,让我一脸懵逼。

后来发现是mysql 5.7以后的版本数据库的默认模式设置成了  only_full_group_by模式,而在执行的sql里有一些重复的行group by 的时候mysql 不知道选择哪一个行。

那么知道问题了我当时就想到了两种方式。

方法一:关闭only_full_group_by模式

语句如下:

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';
这样子就能关闭only_full_group_by模式

如果要还原则执行

set @@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';
方法二:优化SQL语句~

........我不会~我(暂时)是MySQL小白(只为完成查询任务,并不考虑最优解)。


版权声明:若无特殊注明,本文为《周小雨》原创,转载请保留文章出处。
本文链接:https://zxyy.me/post-166.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框
可使用QQ号实时获取昵称+头像

私密评论

吃奶的力气提交吐槽中...


既然没有吐槽,那就赶紧抢沙发吧!